2011-06-14 6 views
6

Je suis nouveau à TDD et je suis à la recherche d'options pour tester mon unité Visual Studio 2010. Cette solution est une application Web MVC3, que je suis en essayant pour utiliser DDD avec IoC, référentiel, et les modèles d'unité de travail. Il utilise également EF4 & les modèles EF4 POCO. (J'ai essayé de modéliser une grande partie de la Microsoft N-layer App, empruntant également des modèles de conception d'un couple d'autres blogs).Quelles sont les options préférées, aujourd'hui, pour les tests unitaires dans Visual Studio 2010?

J'ai recherché et lu à ce sujet pendant quelques heures, et il semble que je trouve des informations contradictoires partout où je me tourne. Une grande partie de ceci est due aux vieux résultats apparaissant, et aux options changeantes pour Visual Studio 2010.

Je sais qu'il y a plusieurs options, mais encore une fois, j'ai du mal à discerner des options périmées des options plus récentes, et là Il y a une certaine ambiguïté dans les références que les gens utilisent. Même le popular discussion a ici quelques informations anciennes/ambigües/conflictuelles.

Par exemple:

  1. Y at-il une différence entre MSTest, Visual Studio Unit Testing Framework et Microsoft.VisualStudio.TestTools.UnitTesting? Si oui, quoi? Il semble que ce soit différent, mais ont été incorrectement référencés dans certaines discussions que j'ai vues. Puisque l'auteur de NUnit a également écrit xUnit, cela signifie-t-il que xUnit remplace NUnit, rendant ainsi NUnit obsolète? Il semble que certains, même aujourd'hui, préfèrent NUnit. Mais si NUnit est obsolète, pourquoi commencer aujourd'hui en utilisant NUnit sur xUnit? Si NUnit n'est pas obsolète, cela signifie-t-il que xUnit ne décolle pas comme prévu? Pourquoi l'auteur continuerait-il à soutenir deux outils apparemment redondants?

  2. Lequel de ceux-ci s'intègre dans VS2010 sans avoir à utiliser séparément des lignes de commande pour tester, ou avoir à acheter des outils comme TestDriven.Net? (J'ai ReSharper, cependant, si cela supporte l'un de ceux-ci.)

  3. Y a-t-il eu récemment des changements notables à l'un de ceux-ci qui rendraient les anciennes discussions invalides?

  4. Y a-t-il d'autres éléments que je devrais considérer en plus ou en plus de ceux que j'ai mentionnés ci-dessus?

Je ne cherche pas nécessairement une comparaison approfondie (si vous êtes plus que bienvenus pour fournir un si vous le souhaitez), mais plus d'un consensus mis à jour du courant outils qui sont utilisés aujourd'hui pour le nouveau développement VS2010. En surface, le «Visual Studio Unit Testing Framework» semble s'intégrer parfaitement dans le VS2010 (Pro) dès sa sortie de la boîte, et semble facile à mettre en place rapidement, contrairement à d'autres, même si c'est un peu gonflé. Mais depuis que je suis nouveau, je ne veux pas entrer dans les trois mois à venir, puis réaliser que je me suis peinte dans un coin juste parce que cela semblait plus facile à ramasser. Je sais aussi que cette question peut être considérée comme une «mauvaise» question par certains, en raison de sa nature ouverte et large, mais alors que ce sont des questions différentes, je pense qu'ils sont tous liés, et tous découlent de mon général confusion sur les points ambigus et contradictoires que je trouve sur les tests unitaires dans VS2010.

Merci d'avance.

EDIT: Ceci est censé être plus d'une discussion mise à jour de près de trois ans popular discussion I lié à ci-dessus. Cette discussion a quelques bons points, mais beaucoup de choses (pourraient) avoir changé en trois ans, et j'aime une évaluation plus actuelle du sujet.

Répondre

7
  1. Tout de même .. juste confusopoly (MSTest est le coureur, le cadre est la DLL). Je vais me référer à MSTest à partir de maintenant.
  2. Ne pas avoir beaucoup de kilométrage avec xUnit. Je me tiens fermement dans le camp NUnit. Pas sûr de l'histoire .. mais AFAIR Jim Newkirk a même été embauché par Microsoft pour le développement de MSTest. Je peux définitivement répondre que NUnit n'est pas déprécié (ou même ralentit). J'ai juste un bug corrigé dans les jours qui ont suivi le signalement. Charlie Poole l'a dirigé pendant un moment (et fait un travail stellaire). NUnit est le plus ancien (et basé sur la famille de coureurs de test xUnit qui a commencé avec Beck SUnit et JUnit). J'ai grandi avec (pour ainsi dire). Il reste juste à l'écart et a presque toutes les fonctionnalités dont vous avez besoin pour le développement au jour le jour. MSTest offre l'intégration de VisualStudio mais trouble les eaux avec de minuscules déviations subtiles qui me font trébucher (la parallélisation, la configuration des fixtures doit être statique, etc.etc.). Les autres essaient d'étendre le testeur de différentes façons (changement de terminologie, par exemple, sur les tests théoriques) et sur la façon dont vous écrivez vos tests. Je n'ai jamais eu à étendre mon test-coureur; peut-être que je n'ai pas travaillé dans les environnements qui en ont besoin.
  3. NUnit n'intègre pas l'étagère comme MSTest. Mais si vous avez Resharper (ce que vous devriez), il comble cet écart. MSTest AFAIK nécessite également une copie de l'ensemble de l'IDE (d'une édition particulière) contrairement à NUnit qui peut être simplement copié sur un dossier et exécuté. Sort de vous conduit dans TFS avec "couverture de code libre si vous utilisez MSTest". Si votre organisation utilise TFS pour CI, vous trouverez que l'intégration de n'importe quoi d'autre que MSTest sera "plus de code personnalisé que j'ai besoin d'écrire".

4 et 5 choses continuent de changer si difficile de former une réponse finale. Résumé: NUnit est plus simple à apprendre (il vous prendra un jour ou moins) et la plupart de la littérature est à l'étude. TDD va descendre plus facilement si vous le savez. Personnellement, je n'ai jamais eu de raison de déménager (par exemple, NUnit ne fait pas cela avec xUnit et je ne peux pas vivre sans cela). Sauf si vous êtes gros sur MS-CI (et "gratuit" Coverage et TestImpact), je dirais commencer par NUnit et travailler votre chemin jusqu'à. Pas de testeur d'argent.
L'outil ne garantit pas le succès, c'est la façon dont vous utilisez ces outils. Choisissez-en un, commencez et adaptez-vous.

HTH

+0

Merci, Gishu. Je me demande si les fans de NUnit sont ceux qui ont "grandi" comme vous l'avez fait. Par exemple, si quelqu'un commençait à apprendre aujourd'hui, à partir de zéro, serait-il préférable de commencer avec xUnit? Peut-être que NUnit n'est pas encore déprécié *, mais peut-être que le but ultime est que xUnit remplace NUnit. Ce sont les questions avec lesquelles je me bats. Aussi, pour # 1, vous dites qu'ils sont identiques. Mais si vous consultez les liens que j'ai publiés (il est vrai qu'ils proviennent de Wikipédia), ils affirment qu'ils ne sont pas les mêmes. D'où les faits contradictoires que je suis en train de lire. –

+0

@Jerad Rose - il semble que l'exe TestRunner s'appelle MSTest et vous devez vous référer à l'assembly "VS Unit Testing Framework" pour écrire les DLL que le coureur va consommer. Je ne sais pas pourquoi le Runner et le framework ont ​​besoin de noms différents ... xUnit sort quelque part autour de 2007-8. 3 ans est une longue période de rattrapage. Aussi le "Pourquoi avons-nous construit xUnit.Net" n'est toujours pas assez convaincant (pour moi). RoyOsherove a un post plus détaillé http://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html même si c'est un peu daté. Voir aussi http://stackoverflow.com/questions/261139. – Gishu

+0

Vous pouvez également essayer tous les deux pour un temps non-trivial pour qu'il s'enfonce. Ensuite, prenez une décision – Gishu

0

Je peux répondre # 3: TestDriven s'intègre bien avec VS2010. Vous disposez d'une option de menu contextuel pour exécuter des tests, et vous pouvez même connecter certaines des commandes aux raccourcis clavier afin de pouvoir exécuter rapidement tous vos tests.

+0

Mais il demandait si l'un des frameworks de tests unitaires intégré avec VS2010 _without_ devant acheter Testdriven.NET ou des produits similaires. –

+0

Vous avez raison. J'utilise TestDriven.NET (édition personnelle) gratuitement. Vous ne savez pas quelles sont les limites de cette version. Seul MSTest est intégré dans VS. –

+0

Merci, mais je ne serais pas admissible pour Personal. Je devrais acheter professionnel. –

1

Ceci n'est pas une décision qui change la vie. J'utilise MSTest dans certains projets, NUnit dans d'autres. Je n'ai jamais essayé xUnit, mais je suis sûr que ça va aussi.

Pour ma part, je préfère MSTest simplement b/c des modèles intégrés et des raccourcis clavier qui rendent les tests rapides à exécuter et à configurer. Cela dit, si quelqu'un dans l'équipe de développement ne peut pas utiliser VS, ce n'est pas une joie. En utilisant NUnit, je n'ai pas voulu payer pour Resharper (désolé, je l'ai vu en action mais je n'ai tout simplement pas vu la lumière dessus, je suppose). J'utilise Visual NUnit à la place. http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099 C'est gratuit, il intègre l'interface utilisateur de Visual Studio (bien que ce ne soit pas une belle interface utilisateur, mais c'est mieux que TestDriven.NET). ReSharper peut exécuter des tests écrits en xUnit, NUnit et MSTest.

+0

Re: "Ce n'est pas une décision qui change la vie.", C'est l'une des principales raisons pour commencer - pour savoir si c'est le cas. Je vois, cependant, où certains sont descendus une route, plus tard pour revenir en arrière et en descendre une autre. Je voudrais éviter cela, si possible, car ce projet est très important et sera assez pénible si je trouve que je dois le faire. –

+0

@Jerad> alors la question principale est ce que les autres devs ont l'expérience et l'accès. Il n'y a pas de différence objective (imo) entre eux à part ça. – Paul

1

xUnit a besoin d'un (libre) pour brancher ReSharper qui est lié à partir de la page xUnitContrib: http://xunitcontrib.codeplex.com/

NUnit et MSTest travaillent tous les deux hors de la boîte.

En ReSharper vous pouvez voir ce que les cadres tests unitaires sont installés sous ReSharper -> Options -> Tests unitaires (en bas sous les outils dans le volet gauche)

+0

Excellente info, bien qu'il devrait probablement être posté comme un commentaire à la réponse ci-dessus, pas vraiment assez d'informations pour rivaliser comme une réponse contre @Gishu. – condiosluzverde

+0

@arrocharGeek Je voulais le formatage car il y a 3 parties à cette réponse, et je pense aussi qu'il ne commentait pas sa réponse. – Rangoric

Questions connexes