85 votes

Est-il important de tester un constructeur?

Dois-je tester les constructeurs? Dites que j'ai un constructeur comme celui-ci:

         IMapinfoWrapper wrapper;
        public SystemInfo(IMapinfoWrapper mapinfoWrapper)
        {
            this.wrapper = mapinfoWrapper;
        }
 

Dois-je écrire un test unitaire pour ce construtor? Je n'ai pas de getters pour la variable wrapper, donc je n'ai pas besoin de tester cela.

106voto

yfeldblum Points 42613

Le test unitaire consiste à tester les états publics, les comportements et les interactions de vos objets.

Si vous définissez simplement un champ privé dans votre constructeur, qu'y a-t-il à tester?

Ne dérangez pas les tests unitaires de vos simples accesseurs et mutateurs. C'est juste idiot, et ça n'aide personne.

48voto

Brian Genisio Points 30777

Oui. Si vous disposez d'une logique dans votre constructeur, vous devez le tester. Tout simplement la définition des propriétés n'est pas la logique de l'OMI. Des instructions conditionnelles, contrôle de flux, etc EST logique.

Edit: Vous devriez probablement tester quand IMapinfoWrapper est nulle, si cette dépendance est nécessaire. Si oui, alors c'est logique et vous devriez avoir un test qui attire votre ArgumentNullException ou quoi que... vos tests sont les spécifications qui définissent la façon dont le code se comporte. Si il jette un ArgumentNullException, alors que ce devrait être spécifié dans un test.

15voto

John Sonmez Points 3849

Q: Si vous définissez une variable membre dans le constructeur, pourquoi la définissez-vous.

R: Parce que vous avez un test unitaire en échec que vous ne pouvez réussir que si vous le définissez dans le constructeur.

Si vous utilisez cette logique, où vous écrivez uniquement du code pour faire passer un test unitaire (Test Driven Development), vous aurez déjà la réponse à votre question.

10voto

Draemon Points 15448

Non, sa fonctionnalité sera testée par tous les autres tests unitaires de la classe.

3voto

Brandon Points 41

Dans beaucoup de la FDA des environnements réglementés, plus de code critique doit être de 100% testé...y compris la construction de classes. Ainsi, les essais des constructeurs est parfois nécessaire, indépendamment de raisonnement ou de ne pas les tester. Aussi, les entreprises qui utilisent les outils d'analyse statique devrez vous assurer que TOUTES les données membres d'une classe sont correctement initialisés dans le but de ne pas avoir des erreurs bien que le code peut s'exécuter en douceur et sans erreurs. Habituellement, les données d'initialisation de membre se fait dans le constructeur...juste de la nourriture pour la pensée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X