Jakie są różnice między NUnit i xUnit.net ? Jaki jest sens rozwijania dwóch z nich, a nie tylko jednego?
Czytałem, że xUnit jest rozwijany przez wynalazcę NUnit:
xUnit.net to narzędzie do testów jednostkowych dla platformy .NET Framework. Napisane przez oryginalnego wynalazcę NUnit
Z drugiej strony:
NUnit to platforma do testowania jednostek dla wszystkich języków .Net. Bieżąca wersja produkcyjna, wersja 2.6, jest siódmą główną wersją tego narzędzia do testowania jednostkowego opartego na xUnit
Więc gdzie jest prawda?
Odpowiedzi:
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.
źródło
Mylisz nazwę pojedynczego narzędzia ( xUnit.net ) z nazwą całej klasy frameworków do testów jednostkowych ( xUnit , x odnosi się do języka / środowiska, np. JUnit, NUnit, ...).
źródło
xUnit Plusy:
xUnit kieruje się nową koncepcją, unikając starych metod „SetUp” i „TearDown”. Zmusza nas to do używania IDisposable i konstruktora, tak jak powinniśmy robić jako programiści .NET. Również xUnit ma jasną koncepcję udostępniania kontekstu.
xUnit Wady:
Możliwość pobrania kontekstu testowego nie została jeszcze zaimplementowana.
źródło
Jedną z zalet xUnit jest to, że znajduje testy w różnych klasach; prowadzi je równolegle . Może to zaoszczędzić dużo czasu, jeśli masz wiele przypadków testowych.
Możesz oczywiście to wyłączyć lub kontrolować jego działanie (liczba wątków, wątki na klasę, testy na zespół itp.
Sprawdź to przykładowe rozwiązanie z dwoma projektami testowymi, jednym wykorzystującym xUnit, a drugim NUnit .
Możesz przeczytać więcej o testach równoległych w xUnit tutaj .
źródło