W chwili pisania tej odpowiedzi najnowsza wersja NUnit to 3.5, a xUnit.net to v2.1.
Oba frameworki są niesamowite i oba obsługują równoległe uruchamianie testów (choć w inny sposób). NUnit istnieje od 2002 roku, jest szeroko stosowany, dobrze udokumentowany i ma dużą społeczność, podczas gdy xUnit.net jest nowocześniejszy, bardziej zgodny z TDD, bardziej rozszerzalny, a także zyskuje na popularności w programowaniu .NET Core. Jest to również dobrze udokumentowane.
Oprócz tego główną różnicą, którą zauważyłem, jest sposób, w jaki xUnit.net uruchamia metody testowe. Tak więc w NUnit mamy klasę testową i zestaw metod testowych. NUnit tworzy nową instancję klasy testowej, a następnie uruchamia wszystkie metody testing z tej samej instancji. Natomiast xUnit.net tworzy nową instancję klasy testowej dla każdej z metod testowych. . Dlatego nie można używać pól lub właściwości do udostępniania danych między metodami testowymi, co jest złą praktyką, ponieważ nasze metody testowe byłyby od siebie zależne, co jest nie do przyjęcia w TDD. Więc jeśli używasz xunit.net, możesz być pewien, że twoje metody testowe są całkowicie odizolowane.
Jeśli jednak chcesz udostępnić niektóre dane w swoich metodach testowych, xUnit pozwoli ci to zrobić. Dlatego domyślnie wszystkie metody testowe są całkowicie izolowane, ale w określonych przypadkach można celowo przerwać tę izolację. Podoba mi się takie podejście, dlatego bardziej mi się podoba.