154 votes

NUnit vs. xUnit

Quelles sont les différences entre NUnit y xUnit.net ? Quel est l'intérêt d'en développer deux, et non un seul ?

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

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

D'un autre côté :

NUnit est un cadre de test unitaire pour tous les langages .Net la version actuelle, la version 2.6, est la septième version majeure de ce framework. de ce Outil de test unitaire basé sur xUnit

Alors où est la vérité ?

189voto

akazemis Points 1

Au moment de la rédaction de cette réponse, la dernière version de NUnit est la v3.5 et celle de xUnit.net la v2.1.

Les deux frameworks sont géniaux, et ils prennent tous deux en charge l'exécution de tests en parallèle (d'une manière différente cependant). NUnit existe depuis 2002, il est largement utilisé, bien documenté et dispose d'une large communauté, alors que xUnit.net est plus moderne, plus conforme à la méthode TDD, plus extensible, et également plus tendance dans le développement .NET Core. Il est également bien documenté.

En plus de cela, la principale différence que j'ai remarquée est la manière dont xUnit.net exécute les méthodes de test. Ainsi, dans NUnit Nous avons une classe de test et un ensemble de méthodes de test dans celle-ci. NUnit crée une nouvelle instance de la classe de test et exécute ensuite 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 de champs ou de propriétés pour partager des données entre les 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 en TDD. Donc, si vous utilisez xunit.net, vous pouvez être sûr que vos méthodes de test sont complètement isolées.

Cependant, si vous êtes prêt à partager certaines données entre vos méthodes de test, xUnit vous permettra de le faire. Par conséquent, par défaut, toutes les méthodes de test sont complètement isolées, mais vous pouvez briser cette isolation dans des cas spécifiques de manière intentionnelle. Cette attitude me plaît, c'est pourquoi je la préfère.

41voto

Joey Points 148544

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

12voto

TakinosaJi Points 96

XUnit Pros :

xUnit suit un nouveau concept en évitant les anciennes méthodes "SetUp" et "TearDown". Il nous oblige à utiliser IDisposable et un constructeur comme nous devrions le faire en tant que développeurs .NET. xUnit a également un concept clair de partage de contexte.

Cons. xUnit

La disponibilité pour obtenir le contexte de test n'est pas encore implémentée.

12voto

Rad Points 6308

Un avantage de xUnit est qu'il trouve des tests dans différentes classes et les exécute en parallèle . Cela peut vous faire gagner beaucoup de temps si vous avez beaucoup de cas de test.

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

Vérifiez cet 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. aquí .

4voto

jagttt Points 490

Il y a une fonctionnalité qui me fait passer de XUnit (2.x) à NUNIT (3.x), c'est celle-là :

XUnit ne fonctionne pas avec Console.WriteLine() alors que NUnit le fait.

Je ne peux pas décrire ma frustration quand j'ai découvert qu'il n'y a pas de moyen facile d'obtenir Console.WriteLine travailler dans XUnit, surtout quand j'essaie de faire fonctionner un petit bout de code.

Je pense qu'il s'agit d'un cas d'utilisateur de référence standard qui montre que vous devez toujours faire fonctionner la sortie standard avec votre cadre de test. Je sais que ce n'est pas une bonne pratique, je sais qu'il y a des alternatives comme le gestionnaire de sortie et d'autres choses. Les utilisateurs qui essaient Console.WriteLine sont surtout de nouveaux utilisateurs, et le fait de ne pas pouvoir imprimer quoi que ce soit à l'écran est très, très décevant et frustrant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X