Dies ist eigentlich Sprache agnostic. Aber ich gebe dir Kontext in Python.Sollte ich privat/geschützte Methode unittest
Ich habe diese Elternklasse
class Mammal(object):
def __init__(self):
""" do some work """
def eat(self, food):
"""Eat the food"""
way_to_eat = self._eating_method()
self._consume(food)
def _eating_method(self):
"""Template method"""
def _consume(self, food):
"""Template method"""
Hier eat
die einzige öffentliche Methode während _consume
und _eating_method
sind Methoden tatsächlich geschützt, die von untergeordneten Klassen umgesetzt werden.
Was werden Sie testen, wenn Sie nur die Mammal
Klasse geschrieben haben?
Offensichtlich alle 4 Methoden.
Lassen Sie uns jetzt
class Tiger(Mammal):
def _eating_method(self):
"""Template method"""
def _consume(self, food):
"""Template method"""
Schauen Sie sich diese Klasse ein Kind vorstellen. Es hat nur 2 geschützt Methoden.
Sollte ich alle 4 Methoden von Tiger
testen (einschließlich 2 geerbt) oder nur die Änderungen testen (nur übersteuert 2 Methoden)?
Was ist der Idealfall?
Das hängt davon ab. Normalerweise wird die "Essen" -Methode mit allen möglichen Ergebnissen von "Trainingsmethode" und "Consumer" getestet. Also müssen nur die veränderten Methoden getestet werden. – Daniel