Supposons que j'ai un gestionnaire de classe dérivé d'un employé de classe de base et que l'employé ait une méthode getEmail () héritée par le gestionnaire . Dois-je tester que le comportement de la méthode getEmail () d'un manager est en fait le même que celui d'un employé?
Au moment où ces tests sont écrits, le comportement sera le même, mais bien sûr, à un moment donné, quelqu'un pourrait remplacer cette méthode, changer son comportement et donc casser mon application. Cependant, il semble un peu étrange de tester essentiellement l' absence de code d'ingérence.
(Notez que le test de la méthode Manager :: getEmail () n'améliore pas la couverture du code (ou en fait toute autre métrique de qualité du code (?)) Jusqu'à ce que Manager :: getEmail () soit créé / remplacé.)
(Si la réponse est "Oui", certaines informations sur la façon de gérer les tests partagés entre les classes de base et dérivées seraient utiles.)
Une formulation équivalente de la question:
Si une classe dérivée hérite d'une méthode d'une classe de base, comment exprimez-vous (testez) si vous vous attendez à ce que la méthode héritée:
- Se comportent exactement de la même manière que la base en ce moment (si le comportement de la base change, le comportement de la méthode dérivée ne change pas);
- Se comportent exactement de la même manière que la base pour tous les temps (si le comportement de la classe de base change, le comportement de la classe dérivée change également); ou
- Comportez-vous comme il veut (vous ne vous souciez pas du comportement de cette méthode car vous ne l'appelez jamais).
Manager
classe aEmployee
été la première erreur majeure.