web-dev-qa-db-fra.com

nUnit vs xUnit?

Où sont les différences entre nUnit et xUnit.net ? Quel est l'intérêt d'en développer deux, pas un seul?

J'ai lu que xUnit est développé par l'inventeur de nUnit:

xUnit.net est un outil de test unitaire pour .NET Framework. Écrit par l'inventeur original de NUnit

D'un autre côté:

NUnit est un framework de tests unitaires pour toutes les langues .Net. La version de production actuelle, la version 2.6, est la septième version majeure de cet outil de test unitaire basé sur xUnit

Alors où est la vérité?

77
Ruslan

Les réponses sont un peu anciennes, j'ai donc décidé de fournir une mise à jour: Au moment d'écrire cette réponse, la dernière version de NUnit est v3.5 et xUnit.net est v2.1

Les deux frameworks sont géniaux, ils prennent tous deux en charge l'exécution de tests parallèles (d'une manière différente cependant), NUnit existe depuis 2002, il est largement utilisé, bien documenté et dispose d'une grande communauté, alors que - xUnit.net est plus moderne, plus adhérent à TDD et plus extensible et aussi tendance dans le développement de base .net. C'est aussi bien documenté.

En plus de cela, la principale différence que j'ai remarquée est la façon dont xUnit.net exécute les méthodes de test. Donc, dans NUnit, nous avons une classe de test et un ensemble de méthodes de test. NUnit crée une nouvelle instance de la classe de test, puis exécute toutes les méthodes de test à partir de la même instance. Alors que xUnit.net crée une nouvelle instance de la classe de test pour chacune des méthodes de test.. Par conséquent, on ne peut pas utiliser des champs ou des propriétés pour partager des données entre des méthodes de test, ce qui est une mauvaise pratique, car nos méthodes de test seraient dépendantes les unes des autres, ce qui n'est pas acceptable dans TDD. Donc, si vous utilisez xunit.net, vous pouvez être sûr que vos méthodes de test sont complètement isolées.

Si vous êtes prêt à partager certaines données entre vos méthodes de test, xUnit vous le permettra. Par conséquent, par défaut, toutes les méthodes de test sont complètement isolées, mais vous pouvez intentionnellement rompre cet isolement dans des cas spécifiques. J'aime cette attitude, c'est pourquoi je l'aime mieux.

38
akazemis

Vous confondez le nom d'un seul outil ( xUnit.net ) avec le nom d'une classe entière de frameworks de tests unitaires ( xUnit , le x se référant à un langage/environnement, par exemple JUnit, NUnit, ...).

22
Joey

avantages de xUnit: xUnit suit le nouveau concept en évitant les anciens mehtods "SetUp" et "TearDown". Cela nous oblige à utiliser IDisposable et constructeur comme nous devrions le faire en tant que développeurs .NET. De plus, xUnit a un concept de partage de contexte clair.

xUnit Cons: la disponibilité pour obtenir le contexte de test n'est pas encore implémentée.

3
TakinosaJi

L'un des avantages de xUnit est qu'il trouve des tests dans différentes classes, il les exécute en parallèle . Cela peut vous faire gagner beaucoup de temps si vous disposez de nombreux cas de test.

Vous pouvez bien sûr désactiver cela, ou contrôler son fonctionnement (nombre de threads, threads par classe, tests par Assembly, etc.

Découvrez ceci exemple de solution avec deux projets de test, l'un utilisant xUnit l'autre NUnit

Vous pouvez en savoir plus sur les tests parallèles dans xUnit ici

2
Rad