c# - visual - Quelle est la meilleure façon d'implémenter BDD/TDD dans.NET 2.0?




unit test c# tutorial (8)

NUnit est toujours un de mes préférés. Cependant, si vous utilisez TFS comme contrôle source, je vous suggère de rester avec la pile Microsoft.

Je cherche à ajouter une suite de tests à mon application, mais je ne peux pas passer aux frameworks de test plus récents pour .NET 3.5.

Quelqu'un at-il une suggestion sur les bons cadres de test à utiliser?


Pour une bibliothèque d'objets simulacres, j'ai trouvé que Rhino.Mocks sous licence BSD était plutôt agréable.


NUnit et Rhino conviennent bien et le conteneur auto-mocking peut être intéressant.

Si vous regardez BDD aussi, alors NBehave est probablement un bon choix. Si toutefois vous voulez juste dire le style de BDD qui se rapporte aux tests unitaires (xSpec) bien que vous puissiez vous en sortir en ajoutant un framework (bien que des choses comme specunit ajoutent du sucre synctactique), mais vous voudrez peut-être regarder MSpec .


Je vais devoir mettre un cri pour Moq . C'est un cadre moqueur de lumière propre qui vous guide dans la fosse du succès.

Les outils de test intégrés dans TFS sont corrects, ils feront le travail mais peuvent souvent être un peu difficiles à utiliser. Les rapports générés, la couverture de code et quelques autres portions sont particulièrement mauvais, ils vous font chauve à 22 plutôt que 50.

Si vous aimez vraiment les tests, pensez à essayer l'intégration continue. Vous ressentirez la douleur de la régression rapidement et vous aidera potentiellement à atteindre l'objectif final plus rapidement.

Indépendamment de ce que vous faites, essayez quelques-uns et voyez lequel est le plus naturel, si vous avez le temps. Bonne chance et bon codage.


C'est probablement un résumé de ce qui a déjà été dit, mais pour TDD, j'utilise personnellement Rhino Mocks et MBUnit. Rhino Mocks est un cadre moqueur qui est libre et open source. L'avantage de Rhino Mocks est que nous n'avons pas besoin d'utiliser des chaînes magiques pour définir vos attentes comme vous le faites dans NMock.

J'aime MBUnit parce que MbUnit a le concept de RowTests qui vous permet de faire varier vos entrées à votre méthode de test. MBUnit est également disponible gratuitement.

Vous devez également vous assurer que tout ce que vous choisissez pour votre infrastructure de test unitaire est pris en charge par votre CI (Continuous Integration Server). Nunit est pris en charge par défaut dans Cruise Control.NET et vous devez faire un peu plus de travail pour que MBUnit fonctionne dans ccnet.

Du point de vue de l'EDI, vous devez avoir TestDriven.NET. TestDriven.NET vous permet de faire un clic droit et d'exécuter des tests dans l'EDI et il prend en charge MBUnit et Nunit et d'autres.

NBehave est la bibliothèque BDD que j'ai utilisée. Je n'en ai pas utilisé d'autres donc je ne pouvais pas les comparer et les contraster avec vous, mais NBehave est supporté par Gallio de l'équipe MBUnit, ce qui signifie que vous pouvez exécuter vos tests BDD comme vous le feriez avec TestDriven.NET.

Je recommande également fortement Resharper. Vous constaterez que votre productivité augmente considérablement grâce à cet outil de refactoring et de conseil. Il vous aidera à modifier votre code au fur et à mesure que vous développez vos tests.

J'espère que cela t'aides


Pour mon projet, j'ai utilisé NUnit et TestDriven.NET avec beaucoup de succès. Vous pouvez créer une bibliothèque séparée pour héberger votre code de test ou la placer dans votre exécutable ou votre bibliothèque. Tout dépend si vous voulez que votre code de production soit entrelacé avec votre code de test.

Pour Dependency Injection, j'utilise NInject dans mon projet actuel et son travail est génial. Si vous utilisez l'injection de constructeur, vous n'avez pas besoin d'encombrer votre code avec l'attribut [Inject].

Je n'ai pas utilisé une bibliothèque fictive pour mon projet .NET 2.0 mais pour un autre projet .NET 3.5, j'utiliserai Moq

Notez que tout cela fonctionne avec .NET 2.0 et supérieur. (sauf Moq)


Nous utilisons MbUnit et Rihno Mocks et ils s'avèrent très bien fonctionner ensemble. Quand vous faites TDD, vous aurez certainement besoin de faire une injection de dépendance, alors que cela peut être fait manuellement, cela vaut la peine de regarder un conteneur IoC tel que Castle Windsor .

Cela vaut la peine de regarder les projections d'écran de John Paul Bodhood pour vous aider à démarrer. Le blog de JPB


NUnit est disponible à http://www.nunit.org Je le suggérerais même en travaillant sur la pile MS - le support pour les frameworks non-MS se passe dans les previews MVC qui montre un mouvement défini dans la bonne direction pour nous permettre tout pour personnaliser nos piles pour s'adapter.





bdd