web-dev-qa-db-fra.com

NUnit vs MSTest de Visual Studio 2010?

Je me rends compte qu’il ya beaucoup de questions plus anciennes qui traitent de la question générale de NUnit v MSTest pour les versions de Visual Studio jusqu'en 2008 (comme celui-ci ).

Microsoft a l'habitude de bien faire les choses dans sa 3ème version. Pour MSTest, il s'agit de VS2010.

L'ont-ils fait avec MSTest? Voulez-vous l'utiliser dans un nouveau projet de préférence à NUnit?

Mes préoccupations spécifiques:

  • la vitesse
  • exécution de tests dans CruiseControl.NET (tâche en ligne de commande ou tâche MSBuild)
  • rapports de couverture de code de CC.NET
  • pouvez-vous exécuter des tests MSTest en mode débogage

(Nous utilisons ReSharper, les testeurs ne sont donc pas un problème pour nous. Nous utilisons NUnit depuis quelques années. Nous n'avons pas de TFS.)

40
David White
  • La vitesse des éléments de la liste est identique, mais MsTest peut être un peu plus lent car il crée un dossier à exécuter à chaque fois.
  • MSBuid et CC.Net sont très pénibles. Vous ne pouvez pas exécuter MSTest sur un ordinateur sans VS (non pas sûr de 2010, mais avec 2008, il en est ainsi)
  • pas sûr, désolé
  • oui vous pouvez, du studio visuel

Ma recommandation est la suivante: si NUnit vous satisfait - utilisez-le, oubliez MSTest

31
Andrey

Pour corriger certaines informations anciennes sur le fil;

  1. Il IS possible d'exécuter des tests 64 bits en 2010
  2. À partir de VS2008, il n’est pas nécessaire de laisser MSTEST créer des répertoires et opérer les fichiers binaires, il suffit de désactiver le déploiement. En 2010, valeur par défaut, mais vous devez le définir en 2008.
  3. 2010 MSTEST est plus rapide, mais comme il s'agit d'une infrastructure de test généralisée qui exécute également des tests load/web/UI, la conception présente des compromis qui le ralentissent. Jamie Cansdale semble avoir réussi à obtenir des augmentations de perf avec les dernières versions du support de TestDriven.net pour MSTEST
14
Euan Garden

J'ai principalement utilisé NUnit, certains xUnit et certains MSTest. Les fonctionnalités semblent équivalentes, mais je n’aime pas le programme d’essai MSTest. Il fonctionne dans Visual Studio afin de masquer l'écran ou se trouve sur un autre moniteur, gênant chaque fois que je passe à Visual Studio. (J'exécute NUnit sur un autre moniteur, mais il ne couvre pas tout ce qu'il contient à chaque fois que je cible Visual Studio). Il faut trop de clics pour savoir quel test a échoué et pourquoi.

NUnit peut être exécuté en arrière-plan jusqu'à l'échec d'un test. Il vous indique alors les informations relatives au test de rupture. Cela semble être l’idéal pour que le rouge/vert/refactor se passe bien.

5

Nan. Les mêmes problèmes concernant les domaines d'application et la résolution de l'Assemblée existent toujours. J'éviterais à moins que vous ne vouliez le nouveau bien pour d'autres tests fonctionnels ou une intégration avec Team System.

2
Preet Sangha

Je ne connais pas grand chose à propos de CruseControl.net, mais vous pouvez déboguer des tests. Actuellement, nous n'utilisons pas non plus TFS, et le MSTest fonctionne pour nous.

0
Nathan Tregillus

Si vous pensez exécuter vos tests en mode 64 bits, utilisez NUnit. MsTest est seulement x86.

0
bjornhol

MSUnit exécute vos cas de test dans des conditions différentes de l'environnement d'exécution réel. Plus précisément, les fichiers déployés diffèrent de ceux déployés lorsque vous exécutez votre projet réel. Cependant, il existe le [DeploymentItem] -Attribute pour spécifier quels fichiers doivent être déployés par MSUnit. Donc, si votre application dépend de fichiers externes , Tels que

  • fichiers de base de données 
  • fichier de configuration de base de données
  • fichier de configuration de l'application 
  • ...

alors, MSUnit n’est pas le bon choix, car les tests de MSUnit ne couvrent jamais ce à quoi votre système de fichiers ressemblera dans un environnement d’exécution. Les paramètres de fichier de projet Visual Studio pour le déploiement de fichiers (Copier toujours, Contenu, etc.) sont ignorés par le programme d'exécution MSUnit. Donc, ces paramètres ne peuvent pas être testés.

0
mischka

Une différence majeure entre les deux est que MSTest crée une copie des DLL actuelles à chaque fois qu'il exécute un test. Si vous utilisez TDD et exécutez fréquemment vos tests, cela peut consommer beaucoup d’espace disque.

Si vous utilisez MSTest, vous pouvez modifier ce paramètre dans Outils> Options> Outils de test> Test de l'exécution. "Limiter le nombre d'anciens résultats de test à" est défini par défaut sur 25 dans Visual Studio 2010. Je le modifie généralement en 1.

0
Ryan Lundy