J'ai une classe appelée FooJob() qui s'exécute sur un service Windows WCF. Cette classe a seulement 2 méthodes publiques, le constructeur, et une méthode Run().Tester uniquement la méthode publique sur une classe de taille moyenne?
Lorsque les clients appellent mon service, un Dim une nouvelle instance de la classe d'emploi, passer certains paramètres à l'cteur, puis appelez Run() ...
Run() prendra les paramètres, faire logique, envoyer une demande (en temps réel) à un fournisseur de données externe, prendre la réponse, faire une logique métier, puis la mettre dans la base de données ...
Est-il sage d'écrire seulement un test unitaire (si même possible) sur la fonction Run()? Ou vais-je finir par me tuer ici? Dans ce cas, devrais-je forer dans les fonctions privées et tester les unités de la classe FooJob()? Mais alors, cela ne va-t-il pas «casser» le paradigme de «comportement de test seul»/interface publique que certains défendent dans TDD? Je sais que cela pourrait être une question vague, mais tout conseil/orientation ou des points dans la bonne direction seraient très appréciés.
Drew
Merci ... Mais j'ai une question - à quel point sommes-nous trop techniques et construisons trop de classes, alors que nous pourrions simplement tester certaines fonctions privées? Y a-t-il une règle générale ici? Juste aller avec votre intestin ...? – dferraro
Je vous conseille de jeter un oeil aux principes SOLID de la conception orientée objet (http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod), dont le principe de responsabilité unique est un. J'essaierais également de ne pas considérer la décomposition en plusieurs classes comme étant trop technique, car chaque classe devient plus simple et plus compréhensible. Je dirais que «si vous éprouvez le besoin de tester une méthode privée, ce devrait probablement être une autre classe» serait une règle empirique, ainsi que ce que j'ai dit plus haut au sujet d'avoir à énumérer les responsabilités d'une classe. – ColinD
Je casse les classes jusqu'à ce qu'elles ne puissent plus être séparées. Si vous évitez les valeurs de retour et que vous pensez aux classes comme l'envoi de messages les uns aux autres, cela devient un peu plus facile à conceptualiser. Les micro-classes ont l'avantage d'être extrêmement faciles à comprendre, ainsi que le fait que l'ajout de nouveaux comportements se fait généralement en ajoutant plus de classes, ce qui signifie que vous pouvez laisser le code existant et testé seul. C'est une bonne chose. – kyoryu