-
Tests unitaires en Java
Bonjour à tous,
Je me posais une question toute bête.
Je suis en train d'utiliser TestNG pour effectuer des tests unitaires. J'utilise également un outil de couverture de code (Cobertura) pour voir quelles méthodes sont testées.
Ma question est la suivante :
Quid des méthodes déclarées en tant que private. Elles ne sont pas accessibles depuis ma classe de test forcément. Du coup, je ne peux pas les tester ?
Cela me parait bizarre :S
Merci bien pour vos réponses
-
un classe X fournis des fonctionnalités à celui qui l'utilise. Comment elle le fait ne concerne pas celui qui l'utilise. Le but d'un test unitaire est de vérifier que ces fonctionnalités fonctionnent bien comme prévu. Ca n'a donc pas de sens de tester explicitement les méthodes privées. Elle sont testées indirectement en s'assurant des fonctionnalités de la classe.
-
Ok, Tchize merci pour ta réponse, mais que penser de ceci ?
http://www.openwritings.net/public/t...rivate-methods
C'est une mauvaise façon de procéder ?
-
a bien des égards, oui:
on utilise la reflexion -> en cas de suppression / renommage de la méthode, le problème n'apparaitra pas à la compilation, et ça ne supportera pas le refactoring
le test demande la présence d'une méthode privée ayant une signature précise, ce qui compromet l'évolution future de la classe. Normalement une méthode privée peut être supprimée, changée, renommée, sans que la classe aie de comptes à rendre à qui que ce soit.
Si vous avez vraiment besoin de tester la méthode, passez la en protégé ou public. C'est qu'elle a une réelle valeur ajoutée en elle même.
-
Ok merci. C'est vrai que tu n'as pas tort. Je n'avais pas pensé à un éventuel refactoring. :oops:
Bon, je passe la méthode à public .