2010-11-16 6 views
3

Possible en double:
testing an internal classComment tester les classes et méthodes internes?

J'aime avoir mes cours de test dans un ensemble séparé, et qui est à l'origine un problème avec les classes tests internes. Puisque les classes internes et les méthodes ne sont visibles qu'à l'intérieur de l'assemblage, mon assembly de test ne peut pas voir ces classes et méthodes. Quel est le moyen le plus efficace de tester ces classes? Dois-je utiliser la réflexion pour accéder aux méthodes que je ne veux pas tester?

+1

Cela a déjà été demandé: http://stackoverflow.com/questions/606137/testing-an-internal-class –

+1

En effet, et il a aussi la réponse là-bas. Testez votre API de haut niveau, pas vos classes internes. Si vous le devez, vous pouvez cependant utiliser InternalsVisibleTo. – Peter

+0

Désolé pour cela ... est-il possible de marquer la question comme doublon? –

Répondre

1

Mon option préférée est de tester simplement les indirectement via les classes publiques et des méthodes qui les utilisent, tout comme avec des classes et des méthodes privées.

Cela dépend, cependant, j'ai tendance à faire TDD, et finissent par ne jamais utiliser interne. Je n'aime pas vraiment l'idée de mettre un attribut dans le code de production juste pour le rendre testable.

1

Vous pouvez refactoriser la fonctionnalité dans une nouvelle classe avec une méthode publique, puis tester cette méthode.

0

Je pense que vous pouvez vous demander où votre cours interne est utilisé et dans quel but.

S'il y est, il doit avoir sa propre mission. Et cette mission pourrait avoir un effet; par exemple l'état d'un autre objet. Donc, en testant cet 'autre' objet, vous pourriez avoir une chance de tester indirectement votre classe interne.

Mais le bon début peut être en question s'il est vraiment nécessaire d'avoir cette classe interne. Si vous avez l'intention d'écrire un TTDD (Testable Test Driven Development), votre conception pourrait nécessiter une autre architecture.

Questions connexes