web-dev-qa-db-fra.com

Test unitaire, NUnit ou Visual studio?

J'utilise Visual Studio (parfois resharper) pour exécuter mon test unitaire.

J'ai entendu parler de NUnit, mais je ne sais pas grand chose à ce sujet ...

Devrais-je m'en soucier? Peut-il offrir quelque chose de mieux que Visual Studio?

Devrais-je utiliser NUnit et pourquoi?

112
Tim

NUnit présente peu d'avantages par rapport à MS-Test

  1. Attribut Suite: permet d'agréger les tests et de les exécuter séparément (utile pour les grands projets avec des tests rapides et lents par exemple)
  2. Méthode d’assertion lisible, par exemple Assert.AreEqual(expected, actual) vs Assert.That(actual, Is.EqualTo(expected))
  3. NUnit a de fréquentes mises à jour de versions - MS-Test n'en a qu'une par version de VS.
  4. De nombreux coureurs intégrés, y compris Resharper et TestDriven.NET
  5. Assertion attendue du message d'exception - peut être effectuée à l'aide d'un attribut dans NUnit mais doit être effectuée à l'aide de Try-Catch dans MS-Test
  6. [TestCase]! NUnit permet d'effectuer des tests paramétrés.
94
Elisha

De mon point de vue actuel (après 8 mois de développement avec environ 10 développeurs en moyenne), je conseillerais contre d'utiliser MSTest pour les raisons suivantes

  • Le cadre en lui-même est assez lent. Je ne parle pas du code de test quevous écrivez - c’est sous votre contrôle . Je veux dire que le cadre d’exécution de ces tests est lent, qu’il s’agisse d’une suite de tests.
  • Nécessité de conserver un fichier de métadonnées de test Ce qui entraîne toujours des complications Lorsque plusieurs développeurs y travaillent (En recréant par exemple les métadonnées .__, etc.). Aucune autre suite de tests n’a besoin d’un fichier de métadonnées. C'est une sorte de C'est sympa d'organiser vos tests mais vous Pouvez obtenir le même résultat avec Des espaces de noms, des classes et des noms de méthodes.
  • Lors de l'intégration continue, si vous souhaitez exécuter des tests unitaires sur votre machine de génération, vous devez installer Visual Studio sur cette machine.

En d'autres termes, si j'avais à prendre une nouvelle décision il y a 8 mois, je prendrais probablement NUnit. Je n'ai peut-être pas le rapport de résultats de test intégré, mais les développeurs auraient une expérience de test plus transparente.

71
flq

Voici mon expérience avec MS Test

  • Nous utilisons MS Test avec environ 3800 tests.
  • L'exécution des tests prend très longtemps, ce qui est pénible lors de l'exécution de tests simples.
  • Il faut environ 1 Go de mémoire pour exécuter les tests. Non, ce n'est pas dû à des fuites de mémoire lors de nos tests. Nous rencontrons fréquemment des OutOfMemoryExceptions.
  • Comme il utilise beaucoup de ressources, nous commençons à exécuter les tests à partir de fichiers de commandes. Alors, à quoi sert toute l'intégration?
  • C'est buggy et instable:
    • Par exemple, si vous supprimez l'attribut [Ignorer] d'un test, celui-ci ne le reconnaît pas, car il cache des informations sur les tests quelque part. Vous devez actualiser la liste de tests, ce qui résout parfois le problème, ou redémarrer VS.
    • Il ne copie pas au hasard les assemblys de référence dans le répertoire de sortie.
    • Les éléments de déploiement (fichiers supplémentaires à utiliser) ne fonctionnent tout simplement pas correctement. Ils sont ignorés au hasard.
  • Des informations masquées (non visibles dans le code de test) sont contenues dans les fichiers vsmdi et testrunconfig. Si vous ne vous en souciez pas, cela pourrait ne pas fonctionner.
  • Sur le plan fonctionnel, il pourrait être comparable à NUnit, mais il est très coûteux si vous envisagez d’utiliser VS tester edition.

Ajout: Nous avons encore quelques tests, nous ne pouvons même pas dire combien. Il est impossible de les exécuter tous à partir de Visual Studio, à cause de OutOfMemoryExceptions et d'autres problèmes d'instabilité. Nous exécutons les tests à partir de scripts. Il serait facile de visualiser les résultats des tests dans Visual Studio, mais lorsque la solution est ouverte, VS se bloque (à chaque fois). Nous devons donc rechercher les tests qui échouent en utilisant la recherche de texte. Il n'y a plus aucun avantage d'un outil intégré.


Une autre mise à jour : Nous utilisons VS 2013 maintenant. Beaucoup de choses ont changé. Ils ont réécrit le testeur de test MS Test pour la troisième fois depuis le début. Cela a provoqué de nombreux changements, mais aucune des deux nouvelles versions ne faisait mieux. Nous sommes heureux de ne pas avoir utilisé les fonctionnalités sophistiquées de MS Test, car elles ne sont plus toutes prises en charge. C'est vraiment dommage. Nous utilisons toujours des scripts pour créer et exécuter tous les tests unitaires, car il est plus pratique. Il a fallu quelques minutes à Visual Studio pour commencer à exécuter des tests (la durée est mesurée après la compilation jusqu'au début du premier test). Ils le corrigent probablement avec une mise à jour et cela pourrait être un problème spécifique de notre projet. Cependant, Resharper est beaucoup plus rapide lorsque vous exécutez les mêmes tests.

Conclusion : Au moins en combinaison avec Resharper, MS Test est utile. Et j'espère qu'ils découvriront enfin comment le programme d'exécution de test devrait être écrit et qu'ils ne procéderont pas à ce type de modifications lorsque nous mettrons à jour Visual Studio.

48
Stefan Steinegger

NUnit peut être utilisé en combinaison avec Visual Studio. C'est un cadre et non un programme séparé. Vous pouvez donc voir si cela vous convient :).

alt text http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

"Après l’installation du plugin, vous trouverez un nouveau sous-menu dans le menu Outils."

Voir http://nunitit.codeplex.com/ pour plus d'informations sur son importation.

En outre, beaucoup peut être trouvé en utilisant la recherche de SO. Cette rubrique répertorie les avantages de NUnit par rapport aux tests standard MS, par exemple.

18
bastijn

Le plus gros avantage de MS-Test par rapport à NUnit: MS-Test peut générer des objets fictifs à l'aide de Reflection. Je l'ai trouvé très utile

5
Maciej

NUnit fonctionne avec l'édition standard de VS.

3
Per Erik Stendahl

NUnit est un framework de test unitaire, qui est également supporté par resharper. Je pense que vous utilisez le framework de tests unitaires de Microsoft, alors NUnit n’est qu’une alternative au produit Microsoft;)

Voici le lien vers la page d'accueil de NUnit: http://nunit.org/index.php

1
Oliver Hanappi

Je ne suis pas sûr des autres, mais NUnit fournit une interface graphique et une console Nice pour exécuter vos tests unitaires. Vous pouvez également générer un rapport du résultat de l'exécution du test NUnit, qui donnerait le détail de l'échec ou de la réussite du test, ainsi prendre pour votre test unitaire

1
Vinay Pandey

Dans NUnit , les tests ne sont pas exécutés en parallèle. Au contraire, il semble que tous les tests s’exécutent sur un seul thread. Dans MSTest, chaque test est instancié sur un thread séparé. Les analyses sont donc entrelacées. Par conséquent, si le test A dépend du test B pour réussir, il échouera probablement car le test B commencera probablement en même temps que le test A en cours.

0
Mourad Samy