Il existe un grand nombre de frameworks les plus inutiles pour .NET. J'ai trouvé cette petite comparaison de fonctionnalités: http://xunit.github.io/docs/comparisons.html
Maintenant, je dois choisir le meilleur pour nous. Mais comment? Est-ce que ça importe? Lequel est le plus à l'épreuve du temps et a un élan décent derrière? Dois-je me soucier des fonctionnalités? Alors que xUnit semble être le plus moderne et spécifiquement conçu pour .NET, NUnit semble à nouveau être celui qui est largement accepté. MSTest est à nouveau déjà intégré dans Visual Studio ...
Réponses:
Je sais que c'est un vieux fil de discussion, mais j'ai pensé publier un vote pour xUnit.NET . Alors que la plupart des autres cadres de test mentionnés sont tous à peu près les mêmes, xUnit.NET a adopté une approche assez unique, moderne et flexible pour les tests unitaires. Il change la terminologie, donc vous ne définissez plus TestFixtures et Tests ... vous spécifiez des faits et des théories sur votre code, qui s'intègre mieux avec le concept de ce qu'est un test du point de vue TDD / BDD.
xUnit.NET est également EXTRÊMEMENT extensible. Ses classes d'attributs FactAttribute et TraitAttribute ne sont pas scellées et fournissent des méthodes de base remplaçables qui vous donnent beaucoup de contrôle sur la façon dont les méthodes que ces attributs décorent doivent être exécutées. Alors que xUnit.NET dans sa forme par défaut vous permet d'écrire des classes de test qui sont similaires aux montages de test NUnit avec leurs méthodes de test, vous n'êtes pas du tout confiné à cette forme de test unitaire. Vous êtes libre d'étendre le cadre pour prendre en charge les spécifications de préoccupation / contexte / observation de style BDD, comme illustré ici .
xUnit.NET prend également en charge les tests de style d'ajustement directement prêts à l'emploi avec son attribut Théorie et les attributs de données correspondants. Les données d'entrée Fit peuvent être chargées à partir d'Excel, d'une base de données ou même d'une source de données personnalisée telle qu'un document Word (en étendant l'attribut de données de base.) Cela vous permet de capitaliser sur une plate-forme de test unique pour les tests unitaires et les tests d'intégration, qui peut être énorme pour réduire les dépendances des produits et la formation requise.
D'autres approches de test peuvent également être implémentées avec xUnit.NET ... les possibilités sont assez illimitées. Combiné à un autre cadre de simulation très tourné vers l'avenir, Moq , les deux créent une plate-forme très flexible, extensible et puissante pour la mise en œuvre de tests automatisés.
la source
Trait
qui fait vraiment ou si vous pouvez regrouper différents tests dans un test monoparental (par exemple, toustests
dans untestfixture
). nUnit crée une excellente vue hiérarchique au lieu de la vue plate des tests de xUnit. De plus, la nomenclature n'a aucun sens - faits et théorie? Être réaliste! Ce sont mieux appelés tests et données.NUnit est probablement le plus pris en charge par les outils tiers. Il existe également depuis plus longtemps que les trois autres.
Personnellement, je ne me soucie pas beaucoup des cadres de tests unitaires, les bibliothèques de simulation sont beaucoup plus importantes à mon humble avis (et vous enferment beaucoup plus). Choisissez-en un et respectez-le.
la source
Je n'irais pas avec MSTest. Bien que ce soit probablement la preuve la plus future des frameworks avec Microsoft derrière, ce n'est pas la solution la plus flexible. Il ne fonctionnera pas seul sans quelques hacks. Il est donc difficile de l'exécuter sur un serveur de génération autre que TFS sans installer Visual Studio. Le test-runner de Visual Studio est en fait plus lent que Testdriven.Net + l'un des autres frameworks. Et comme les versions de ce framework sont liées aux versions de Visual Studio, il y a moins de mises à jour et si vous devez travailler avec un VS plus ancien, vous êtes lié à un MSTest plus ancien.
Je ne pense pas que cela importe beaucoup lequel des autres cadres que vous utilisez. Il est vraiment facile de passer de l'un à l'autre.
J'utilise personnellement XUnit.Net ou NUnit selon la préférence de mes collègues. NUnit est le plus standard. XUnit.Net est le framework le plus léger.
la source
Pensez à compléter, et non à remplacer, MSTest par un autre cadre de test. Vous pouvez conserver l'intégration de Visual Studio MSTest tout en bénéficiant des avantages d'un framework de test plus complet.
Par exemple, j'utilise xUnit avec MSTest. Ajoutez une référence à l'assembly xUnit.dll et faites simplement quelque chose comme ceci. Étonnamment, cela fonctionne!
la source
Suprisingly, it just works!
Vous venez d'appeler une fonction statique d'un autre assembly. Pourquoi êtes-vous surpris que cela fonctionne? Aussi, si vous avez juste besoin d'affirmations que pourquoi ne pas utiliser un assemblage spécialement conçu pour cela?Nunit ne fonctionne pas bien avec les projets en mode mixte en C ++, j'ai donc dû le laisser tomber
la source
Ce n'est pas une grosse affaire à petite échelle / personnelle, mais cela peut devenir une grosse affaire rapidement à plus grande échelle. Mon employeur est un grand magasin Microsoft, mais ne veut pas / ne peut pas acheter Team System / TFS pour un certain nombre de raisons. Nous utilisons actuellement Subversion + Orcas + MBUnit + TestDriven.NET et cela fonctionne bien, mais obtenir TD.NET était un énorme problème. La sensibilité de la version de MBUnit + TestDriven.NET est également un gros problème, et avoir une chose commerciale supplémentaire (TD.NET) pour les aspects juridiques à examiner et l'approvisionnement à gérer et à gérer, n'est pas anodin. Mon entreprise, comme beaucoup d'entreprises, est grosse et satisfaite d'un modèle d'abonnement MSDN, et il n'est tout simplement pas habitué à gérer des achats uniques pour des centaines de développeurs. En d'autres termes, l'offre MS entièrement intégrée, bien qu'elle ne soit certainement pas toujours la meilleure du pain, est à mon avis une valeur ajoutée significative.
Je pense que nous allons rester avec notre étape actuelle car cela fonctionne et nous avons déjà surmonté la bosse sur le plan organisationnel, mais je souhaite vraiment que MS ait une offre convaincante dans cet espace afin que nous puissions consolider et simplifier un peu notre pile de développement.
la source
Ce n'est pas un gros problème, il est assez facile de basculer entre eux. MSTest étant intégré n'est pas un gros problème non plus, il suffit de saisir testdriven.net.
Comme la personne précédente a dit choisir un cadre moqueur, mon préféré en ce moment est Moq.
la source