Question

Je suis donc relativement novice dans les tests unitaires et les moqueries en C # et .NET; J'utilise xUnit.net et Rhino Mocks respectivement. Je suis un converti et je m'attache plutôt à écrire des spécifications de comportement plutôt que de simples TDD. Bah, sémantique; Je veux un filet de sécurité automatisé qui fonctionne au-dessus, essentiellement.

Une pensée me frappa cependant. Je compare la programmation aux interfaces, et les avantages en ce qui concerne la séparation des dépendances vont là-bas. Vendu. Cependant, dans ma suite de vérification du comportement (alias tests unitaires ;-)), j'affirme le comportement une interface à la fois. Comme dans le cas, une implémentation d’une interface à la fois, avec toutes ses dépendances simulées et les attentes définies.

L’approche semble être que si nous vérifions qu’une classe se comporte comme il le devrait contre ses dépendances collaboratrices et si, à son tour, chacune de ces dépendances collaboratrices a signé le même contrat de qualité, nous sommes en or. Semble assez raisonnable.

Retour à la pensée, cependant. Existe-t-il une valeur dans les tests de semi-intégration, lorsqu'un montage de test s'affirme contre une unité d'implémentations concrètes reliées entre elles et que nous testons son comportement interne par rapport à des dépendances simulées? Je viens de relire cela et je pense que j'aurais probablement pu mieux le formuler. Évidemment, il y aura un certain nombre de "bien, si cela ajoute de la valeur pour vous, continuez de le faire", je suppose - mais quelqu'un d'autre a-t-il pensé à faire cela et en a-t-il tiré des avantages supérieurs aux coûts?

Était-ce utile?

La solution

Votre question est débattue depuis des années et peut également être reformulée comme suit: "Qu'est-ce qu'une unité"?

Aucune loi sur les tests unitaires ne vous oblige à tester chaque classe séparément. Cependant, pour être maintenable, vous voulez vraiment que les tests ne changent que lorsque le comportement qu’ils testent change. Vu sous cet angle, il est souvent raisonnable d’utiliser des versions concrètes de proches collaborateurs et des contrefaçons pour les plus éloignés.

Le seul endroit où j'utilise absolument des contrefaçons est de suivre celui de Michael Feather Règles de test des unités .

Autres conseils

Je ne vois pas l'intérêt des tests d'intégration qui relient simplement des classes internes entièrement testables par unités.

Il me semble que la valeur des tests d’intégration réside dans le fait qu’il touche la plate-forme ou des interfaces externes, c’est-à-dire que vous ne pouvez pas effectuer de tests unitaires.

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