Quel est le meilleur framework de test unitaire pour .NET et pourquoi? [fermé]

26

Il me semble que tout le monde utilise NUnit sans même considérer les autres options. Je pense que c'est parce que:

  • Tout le monde le connaît déjà, ils n'auront donc pas à apprendre une nouvelle API.
  • Il est déjà configuré avec leur serveur d'intégration continue pour fonctionner avec NUnit.

Suis-je dans l'erreur?

J'ai décidé d'utiliser xUnit sur l'un de mes propres projets récemment et j'adore ça! Cela a beaucoup plus de sens pour moi et conceptuellement, cela semble être un pas en avant certain de NUnit.

J'aimerais entendre des opinions sur le cadre qui est réellement le meilleur - sans prendre en considération le fait de devoir l'apprendre ou de reconfigurer vos tests automatisés.

Personne
la source
6
Veuillez définir le mieux. Le moins cher? le plus facile à coder? le moins de lignes de code par test? stackoverflow.com/questions/680298/…
Amir Rezaei
Désolé, je voulais dire le plus puissant, stable et intuitif, peu importe. Je demande des opinions et des raisons pour lesquelles . J'ai laissé «le meilleur» à l'imagination du répondeur parce que j'aimerais aussi voir lesquels de ces aspects sont importants pour les gens.
Personne le
2
Si vous pouvez reformuler votre question, cela pourrait être OK, sinon ce n'est qu'une "liste de X" qui n'est pas constructive. Voir six lignes directrices pour des questions subjectives constructives
ChrisF
2
«meilleur» est une chose stupide à demander - car il y a très rarement un seul meilleur en partie parce qu'il dépendra du contexte et en partie parce qu'il est inévitablement dans une certaine mesure subjectif.
Murph
10
Murph. Tout d'abord, ce site est destiné aux questions subjectives. Deuxièmement, je demande des opinions, donc j'aimerais voir l'interprétation des autres du «meilleur». Et ne m'appelle pas stupide.
Personne le

Réponses:

15

MSTest

J'utilise personnellement MSTest. NUnit est vraiment sympa, mais dans VS2010, MSTest est déjà entièrement intégré dans l'IDE et il existe des modèles de projet complets pour cela. Pour .NET, si vous utilisez 2010, je pense que MSTest est la voie à suivre (MSTest dans VS2008, je ne pense pas que ce soit à la hauteur) simplement pour la couverture du code, le lanceur de test et d'autres outils à votre disposition hors de la boîte. (Si vous utilisez CodeRush ou R #, alors ils ont de très bons exécuteurs / outils de test pour d'autres frameworks de test)

Edit: je suis depuis passé à XUnit. :RÉ

Ryan Hayes
la source
J'ai voté pour MbUnit / Galio et cette réponse. MbUnit / Galio est tout simplement meilleur, mais leurs mains sont liées lorsqu'il s'agit d'exécuter des tests MsTest, car certaines classes critiques de cette bibliothèque .Net sont finales et non extensibles. Cependant, si vous devez faire une automatisation de l'interface graphique, l'interface utilisateur codée et cuite.codeplex.com/documentation fonctionnent au-dessus de MsTest, il suffit donc de les utiliser.
Job
2
Le problème que j'ai avec MSTest est qu'il ne prend pas en charge nativement les tests en ligne de commande, cela peut être un problème lorsque vous souhaitez exécuter des unités via CI.
CmdrTallen
1
Nunit est maintenant entièrement intégrable dans VS non?
BKSpurgeon
Oui, ça l'est. Étant donné que cela a environ 6 ans maintenant, je suis personnellement passé à NUnit puis à XUnit. Les deux (et d'autres) ont des paquets de pépites qui servent d'adaptateurs pour allumer la même fonctionnalité VS que MSTest. Honnêtement, MSTest est probablement en bas de la liste à ce stade. Je voterais XUnit ou NUnit. ces jours-ci car les deux sont solides, entretenus et modernes.
Ryan Hayes
14

J'ai commencé à utiliser Gallio / MbUnit il y a plusieurs années. Et les fonctionnalités et les joyaux qu'il offre sont tellement puissants que je n'ai jamais regretté mon choix. En fait, je fais maintenant partie de l'équipe de développement du projet Gallio OSS; donc je peux contribuer à le rendre encore plus génial.

  • MbUnit possède de nombreuses fonctionnalités puissantes qui ne font que faciliter la vie de mes développeurs (vérificateurs de contrats, usines de test, comparateur d'égalité structurelle, tests combinatoires, cadre de génération de données, texte différent, assertions xml, points d'extension, etc.)
  • Gallio fournit une plate-forme cohérente pour exécuter tous mes tests avec un bel outil de création de rapports. J'aime également le fait que je puisse intégrer des tests d'autres projets OSS qui n'utilisent pas MbUnit et les exécutent simplement. L'intégration transparente dans de nombreux outils tiers est également pratique (R #, PoSh, dotCover, etc.) Et l'extensibilité de l'infrastructure est incroyable (par exemple, je viens de terminer d'écrire un adaptateur de test pour un framework de test C ++ natif non géré) Il fera bientôt partie d'une future version)

Le wiki est certainement un bon point de départ pour découvrir Gallio et MbUnit v3. Il manque encore quelques chapitres mais c'est déjà très utile.

Yann Trevin
la source
Le comparateur d'égalité structurelle et le cadre de génération de données semblent excellents. MbUnit peut-il effectuer des tests basés sur les données - c'est-à-dire lire des fichiers csv / xsd et les utiliser comme arguments de méthode de test? C'est l'une des principales attractions de xunit pour moi.
Personne le
Sûr. ASAIK MbUnit a été le premier framework de test pour .NET à introduire des tests basés sur les données. Il peut lier des paramètres de test à des sources de données internes ([Row], [Column], etc.) et externes ([CsvData], [XmlData], etc.). Plus de détails ici: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin
Ont-ils résolu les problèmes de performances rencontrés avec Gallio et Visual Studio? L'affaire a-t-elle été un tueur pour nous.
Wyatt Barnett
J'ai utilisé MbUnit quand je travaillais pour une petite entreprise et c'était génial! Plus tard, j'ai utilisé MsTest parce que je devais le faire, et ça s'est bien passé. Je préfère toujours écrire du code explicite plutôt que de configurer les paramètres du projet. Le soutien des entreprises aide cependant MSTest. Que le design soit laid ou beau, vous savez que tout ce qui sort de MSFT sera bien testé.
Job
@YannTrevin Quel est le statut de Gallio / MbUnit? J'ai regardé le référentiel de Google Code et il ne semble pas avoir de changements récents. Le développement se produit-il ailleurs ou le projet est-il au point mort?
Wesley Wiser
9

En choisir un et l'utiliser est peut-être l'étape la plus importante ici.

Personnellement, je choisirais NUnit pour plusieurs raisons. Le support d'outillage est avant tout. Il existe un complément gratuit pour Visual Studio 2010 , et tous les principaux plugins tiers le prennent en charge. Chaque système de construction, utilitaire de couverture de test et serveur CI le prend en charge. Dans de nombreux cas, sans plugin. Au niveau du code, il peut gérer à peu près n'importe quel scénario à ce stade - tests pilotés par les données, héritage, classes de test abstraites, classes de test génériques, configuration, suppression, etc. Dans une certaine mesure, nous avons xUnit parce que NUnit est trop riche en fonctionnalités et puissant.

Au-delà de NUnit, je pense que vous pourriez faire un argument assez décent pour MBUnit + Gallio comme mentionné par Yann - c'est un cadre très solide. Celui que vous devriez éviter si possible serait MSTest, qui a quelques défauts fatals à mon humble avis. Les failles étant certaines des contraintes sur vos classes de test, telles que l'absence d'héritage, et les dépendances des SKU de studio visuel professionnels ou meilleurs. Y compris exiger que Visual Studio soit installé sur le serveur de build pour exécuter les tests.

Wyatt Barnett
la source
0

La seule raison est que NUNIT est devenu plus standard que xUnit. Mais personnellement, j'adore xunit.

Cheung
la source