2013-02-08 15 views
47

Musimy zdecydować, jakiej technologii użyć do naszych testów jednostkowych. Obecnie używamy Visual Studio 2010 i nie jesteśmy zadowoleni z MSTest, który przyszedł z tym. Jest błędny, słabo zainstalowany (np. Katalog wyjściowy ustawień testowych nie jest rozpoznawany poprawnie) i ma kilka problemów podczas testowania złożeń w wersjach 32-bitowych i 64-bitowych. Na domiar złego MSTest nie ma dobrej impedancji z naszym systemem kompilacji Jenkins. Dlatego pomyśleliśmy o przejściu na NUnit. Jednak nikt w naszym zespole nie ma dobrej styczności z NUnit. Ponadto wkrótce wprowadzimy się do Visual Studio 2012.Visual Studio 2012 MSTest kontra NUnit za i przeciw

Potrzebuję znać plusy i minusy Visual Studio 2012 MSTest vs najnowszej wersji Nunit. Ponieważ większość artykułów dotyczących przepełnienia stosu dotyczy starszych wersji VS, nie są one powiązane z nami. Chyba Microsoft poprawił MSTest dużo od roku 2010. Proszę podać bezstronnej porównania z szczegółami technicznymi kwestiami masz napotykanych w obu technologii (tylkonowsze wersje)

+0

Odczytać na stronie madcoderspeak.blogspot.com/2011/11/nunit-vs-mstest-2011-edition.html. MSTest nie miał częstych aktualizacji/aktualizacji – Gishu

Odpowiedz

27

używam zarówno MSTest i NUnit w tej chwili. IMHO NUnit jest nadal lepszym rozwiązaniem. Jeśli masz edycję Visual Studio 2012 Premium, to jest całkiem niezły, z wyjątkiem faktu, że nie możesz grupować testów. Podoba mi się fakt, że jest zintegrowany z Visual Studio, ale brak grupowania i możliwość uruchomienia podzbioru testów bez ręcznego ich wyboru jest ogromnym problemem.

Analiza pokrycia jest również całkiem zadowalająca w Premium. Jest szybki i daje ci to, czego potrzebujesz szybko. Jest to jednak funkcja Premium.

Ponieważ wciąż brakuje funkcji MSTest (nawet usuniętych funkcji od wersji vs2010), nadal zalecałbym używanie NUnit do testów jednostkowych. Korzyści obejmują grupowanie testów według przestrzeni nazw, możliwość dodawania adnotacji przypadków testowych (przeprowadzanie tego samego testu wiele razy przy różnych parametrach) i działa dobrze z Opencover i Report Generator dla analizy zasięgu. Głównym cytowanym zarzutem jest to, że nie jest zintegrowany jak MSTest, więc to naprawdę zależy od tego, jak ważne jest to, czy jest to oszustwo.

+0

Chociaż ten wątek jest dość stary, chciałem tylko dodać, że możesz grupować testy używając NUnit i VS (przynajmniej Aktualizacja z 2012 roku 1). Zobacz ten artykuł (http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/09/how-to-manage-unit-tests-in-visual-studio-2012-update-1-part- 1-using-traits-in-the-unit-test-explorer.aspx) jako odniesienie. jedyną rzeczą, którą musisz zrobić, to dodać atrybut kategorii jak "[Category (" MyGroup ")] i pogrupować testy według cech w eksploratorze testowym VS. Może to jest niewiarygodne dla sbdy. – nozzleman

10

@Biranchi: Nie ma już znaczenia, z której platformy testów jednostkowych korzystasz w Visual Studio 2012 (i wyżej). Zobacz mój blog tutaj, kontynuacja tego, do którego się odnosisz. http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/20/part-2-using-traits-with-different-test-frameworks-in-the-unit-test-explorer.aspx

Można nawet mieszać i łączyć testy z różnych struktur, można to nawet zrobić na poziomie metody!
Oznacza to, że można przenosić starszy kod z jednego na drugi bez żadnych wadliwych efektów.

Zobacz także, jak używać Nuget do instalowania adaptera NUnit w rozwiązaniu, uwalniając programistę z samodzielnego instalowania. http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-with-traits-and-code-coverage-in-visual-studio-2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx

@Sriwantha: MSTest jest prostszym rozwiązaniem niż NUnit. NUnit (a także XUnit) daje większą elastyczność, co również prowadzi do mniejszego kodu do napisania. Jeden przykład: Jeśli używasz kategorii (i powinieneś), MSTest wymaga kategorii do dekorowania każdej metody. NUnit pozwala ci udekorować klasę, która będzie obowiązywać dla wszystkich metod w tej klasie.NUnit pozwalają również użyć silnie wpisane kategorie

public class Integration : Category {} 

To wystarczy zadeklarować kategorię, której można użyć zamiast

Category("Integration"); 

gdzie istnieje ryzyko błędów ortograficznych.

NUnit ma znacznie lepsze wsparcie dla testów opartych na danych. NUnit ma również wsparcie dla theories

aby wymienić tylko kilka.

0

Jeszcze jedna rzecz do dodania tutaj. Wygląda na to, że silnik MSTEST nie działa dobrze z wersją TFS w niektórych scenariuszach. Jeśli korzystasz z kompilacji TFS, nie zgłosi ona pominiętych testów (oznaczonych atrybutem Ignoruj). Zawiera tylko Assert.Inconclusive. Jeśli to jest problem, powinieneś użyć NUnit zamiast MSTest.