Au moment de la rédaction de cette réponse, la dernière version de NUnit est la v3.5 et xUnit.net est la v2.1.
Les deux frameworks sont géniaux, et ils prennent tous les 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 possède une grande communauté, tandis que xUnit.net est plus moderne, plus adhérent à TDD, plus extensible et aussi tendance dans le développement .NET Core. C'est également 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. Ainsi, 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 tests à 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 rompre intentionnellement cet isolement dans des cas spécifiques. J'aime cette attitude, c'est pourquoi je l'aime mieux.