Question

Je l'écriture des tests unitaires pour les classes qui ont des propriétés qui ont setters mais pas getters .

Je veux être en mesure de test ces setters pour vous assurer qu'ils mettent les données correctement.

Je trouve mes options sont:

  • apporteurs d'écriture pour ces fonctions afin que je puisse tester si elles sont correctement réglées
  • écrire une méthode telle que testAllSetters() qui tous à la fois test

Mais les deux solutions sont indésirable car il ajoute des fonctionnalités inutiles à la classe juste pour le plaisir de le tester.

  • Je pourrais aussi tester la sortie de la classe pour voir qu'il est correct en général, mais dans de nombreux cas, cela ne teste pas les setters individuels que je voudrais

Quelle est la meilleure façon de setters de tests unitaires sur les classes qui ne sont jumelés getters?

Était-ce utile?

La solution

Le problème ici est que votre ne voulez pas changer votre API pour vos tests unitaires. Commencez à regarder vos tests unitaires comme un autre utilisateur / consommateur de votre API. Tout comme les développeurs utilisant cette bibliothèque, les tests unitaires ont leur propre ensemble d'exigences. Quand vous voyez vos tests unitaires en tant que consommateur de votre API, il y aura un utilisateur qui utilise ces getters, et il les justifie.

Lorsque ce n'est pas possible de changer votre API (par exemple si vous développez un cadre réutilisable), faire l'API test unité interne et utiliser le InternalsVisibleToAttribute pour permettre à votre bibliothèque de tests d'accès méthodes internes de votre code.

Laissant de côté les tests unitaires, vous pouvez toujours envisager d'avoir getters sur ces propriétés, car ayant des propriétés sans getters est très peu intuitive pour les développeurs. Framework Design Guidelines ont même une règle contre ceci:

  

NE PAS des propriétés mis uniquement ou   propriétés avec le dispositif de réglage comportant   l'accessibilité plus large que le getter.

Vous pouvez également prendre cela en considération.

Bonne chance.

Autres conseils

Vous pouvez utiliser PrivateObject pour vérifier les membres privés ont été mis à jour correctement après avoir appelé le setter

Est-ce que les setters ont une logique?

Oui: Soit ouvrir le getter. Java: protégé et avoir le test unitaire dans le même paquet. C #:. InternalsVisibleToAttribute

Non: Ne pas définir les setters directement. Pas de point. Testez les méthodes qui utilisent l'ensemble de données par les setters.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top