Question

Il existe de nombreux frameworks unittesting 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 futur et a un élan décent derrière lui? Devrais-je me soucier des fonctionnalités? Alors que xUnit semble être le plus moderne et spécialement conçu pour .NET, NUnit semble encore être celui qui est largement accepté. MSTest est à nouveau intégré à Visual Studio ...

Était-ce utile?

La solution

Je sais que c'est un vieux fil de discussion, mais je pensais que je posterais un vote pour xUnit.NET . Alors que la plupart des autres infrastructures de test mentionnées sont à peu près les mêmes, xUnit.NET a adopté une approche assez unique, moderne et flexible pour les tests unitaires. Cela change la terminologie, de sorte que vous ne définissez plus TestFixtures and Tests ... vous spécifiez des faits et des théories sur votre code, qui s'intègre mieux au concept de test du point de vue de 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 pouvant être remplacées qui vous donnent un contrôle important sur la manière dont les méthodes que ces attributs décorent doivent être exécutées. Bien que xUnit.NET, dans sa forme par défaut, vous permette d’écrire des classes de test similaires aux dispositifs de test NUnit avec leurs méthodes de test, vous n’êtes pas limité à cette forme de test unitaire. Vous êtes libre d'étendre le cadre pour qu'il prenne en charge les spécifications Concern / Context / Observation de style BDD, comme indiqué ici .

xUnit.NET prend également en charge les tests de style directement avec ses attributs Theory et les attributs de données correspondants. Les données d’adaptation ajustées 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). Vous pouvez ainsi exploiter une plate-forme de test unique pour les tests unitaires et les tests d’intégration. peut être énorme pour réduire les dépendances aux produits et la formation requise.

D'autres méthodes de test peuvent également être implémentées avec xUnit.NET ... les possibilités sont plutôt illimitées. Moq , combinés à un autre framework moqueur très prospectif, créent un environnement très flexible, extensible et puissant. plate-forme pour la mise en œuvre de tests automatisés.

Autres conseils

NUnit est probablement l’outil le plus compatible avec les outils tiers. Cela fait également plus longtemps que les trois autres.

Personnellement, je me moque bien des frameworks de tests unitaires, les bibliothèques moqueuses sont beaucoup plus importantes à mon humble avis (et vous enferment beaucoup plus). Choisissez-en un et respectez-le.

Je n’irais pas avec MSTest. Bien que ce soit probablement la preuve la plus future des infrastructures avec Microsoft, 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 build autre que TFS sans installer Visual Studio. Le test-runner de Visual Studio est en réalité plus lent que Testdriven.Net + n’importe lequel des autres frameworks. Et parce que les versions de cette infrastructure sont liées aux versions de Visual Studio, le nombre de mises à jour est moins élevé et si vous devez travailler avec un ancien VS, vous êtes lié à un ancien MSTest.

Je ne pense pas que le cadre que vous utilisiez compte beaucoup. Passer de l'un à l'autre est très facile.

J'utilise personnellement XUnit.Net ou NUnit selon les préférences de mes collègues. NUnit est le plus standard. XUnit.Net est le framework le plus léger.

Envisagez de compléter, et non de remplacer, MSTest par un autre framework de test. Vous pouvez conserver l'intégration de Visual Studio MSTest tout en bénéficiant d'un cadre de test plus complet.

Par exemple, j'utilise xUnit avec MSTest. Ajoutez une référence à l'assembly xUnit.dll et procédez comme suit. Étonnamment, cela fonctionne!

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}

Ce n’est pas une grosse affaire à petite échelle / personnelle, mais elle peut devenir rapidement une plus grosse affaire à 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é des versions de MBUnit + TestDriven.NET est également un gros problème. Avoir un élément commercial supplémentaire (TD.NET) à des fins de révision légale et de passation de marché à gérer et à gérer n’est pas anodin. Mon entreprise, comme beaucoup d’entre elles, est satisfaite du modèle d’abonnement MSDN, et elle n’est tout simplement pas habituée à gérer des achats uniques pour des centaines de développeurs. En d’autres termes, l’offre entièrement intégrée de MS, même si elle n’est certainement pas toujours la meilleure des options, constitue à mon avis une valeur ajoutée importante.

Je pense que nous allons continuer avec notre démarche actuelle car cela fonctionne et nous avons déjà surmonté la bosse organisationnelle, mais je souhaite vraiment que MS ait une offre convaincante dans cet espace afin de pouvoir consolider et simplifier notre pile de développeurs bit.

Nunit ne fonctionne pas bien avec les projets en mode mixte en C ++, donc j’ai dû le laisser tomber

Ce n'est pas grave, il est assez facile de basculer entre eux. L'intégration de MSTest n'est pas une grosse affaire non plus, il suffit de saisir testdriven.net.

Comme la personne précédente a déclaré choisir un cadre moqueur, mon préféré pour le moment est Moq.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top