Live Unit Testing w Visual Studio 2017 vs dotCover + ReSharper

W komentarzu do postu na temat Live Unit Testing w nowym Visual Studio pojawiło się pytanie o porównanie go z dotCover. Musiałam zrobić małe rozeznanie, ponieważ przyznam, że dotCover niestety nie miałam okazji nigdy używać na codzień w pracy. Jednak jakiś czas temu się nim bawiłam.

Zatem do rzeczy – owszem dotCover daje nam bardzo podobne możliwości do Live Testing, ale Live naprawdę jest Live – o tym będzie za chwilkę.

Jednak jest płatny i idzie w parze z ReSharperem jako pakiet ReSharper Ultimate. Ceny zaczynają się od 89 euro – wersja roczna dla indywidualnych użytkowników przedłużających licencję po trzecim roku. Kończą gdzieś w okolicach 399 euro. Wszystko też zależy od tego czy to licencja roczna czy płacimy z góry za miesiąc. Więcej informacji znajdziecie tutaj. Tymczasem w Visual Studio dostajemy Live Testing w pakiecie. Niestety jak słusznie w komentarzu zauważył @rbl – opcja ta jest dostępna tylko w wersji Enterpise i z taką też się w żadnej firmie w której pracowałam nie spotkałam – był co najwyżej Professional. Różnica w cenie między Professional a Enterpise jest znaczna – pierwsze to kilka tysięcy dolarów, drugie kilkaset. Pełny cennik tutaj.

DotCover podobnie jak LiveUnitTesting dostarcza nam informacji na temat pokrycia kodu bezpośrednio w edytorze. Tutaj widzimy testy, które przechodzą:

Live Unit Testing - Coverage

Jeśli nie będą przechodziły ikonki z lewej zmienią kolor na czerwony.

Pierwsze co zauważyłam jeśli chodzi o różnice, to dotCover nie obsługuje MSTest. Moje okienko Continous Testing Session z testami w MSTest wyglądało tak:

Dot Cover - MSTest

Czyli troszkę jakby działa, bo widać, że testy przechodzą, ale Coverage niestety nie jest uzupełniony. Kiedy zmieniłam testy na NUnit od razu zrobiło się lepiej:

DotCover - NUnit

Pod prawym klikiem na pasku z procentami mamy przycisk który pozwala nam szybko rzucić okiem na listę testów wchodząc w skład danej części.

Ale skąd się wzięło to okienko Continous Testing Session? Otóż w menu ReSharpera mamy opcję, która go uruchamia.

Live Unit Testing

Kiedy już włączymy, możemy skonfigurować uruchamianie tych testów:

Live Unit Testing

Zatem możemy sprawić, że uruchomią się podczas każdego zapisu lub podczas każdego budowania aplikacji. I tutaj właśnie pojawia się główna różnica – Live Unit Testing wbudowane w VS 2017 naprawdę jest Live, ponieważ by testy się uruchomiły nie musimy niczego zapisywać ani budować. Zmieniamy kod, czekamy chwilkę (mniej niż sekunda) i od razu w konsoli widzimy, że testy się uruchomiły. Co do tego “czekania chwilkę”, to właśnie w pewien sposób może się okazać to dla nas trochę uciążliwe jeśli na przykład tylko zamyśliliśmy się nad kodem a on już nam testy włącza. Znalazłam ustawienie o nazwie “Testcase Timeout”, ale nie jestem pewna za co odpowiada – nie udało mi się tego znaleźć. Natomiast jego zmiana nie miała wpływu na odległość czasu pomiędzy przestaniem pisać a włączeniem testów.

Jeszcze jeśli chodzi o obsługiwanie MSTest, NUnit i XUnit – to Live Unit Testing byłam w stanie sprawdzić jedynie na MSTest, ponieważ o ile Microsoft mówi, że działa z NUnit i XUnit tylko wystarczy doinstalować rozszerzenie, to jednak nie mówi jakie dokładnie i moje próby różnych skończyły się fiaskiem:(

Dużą różnicą są też wykresy pokrycia kodu, które w tej, jak widać na zrzucie ekranu powyżej, zgrabnej formie, daje nam DotCover. Live Unit Testing daje nam tylko informacje w edytorze kodu, gdzie mamy pokrycie a gdzie nie.

I jeszcze odpowiadając na pytanie z komentarza – wersję Enterprise zainstalowałam w wersji RC i z niej właśnie pochodzą zrzuty ekranu zrobione już parę miesięcy temu na potrzeby prezentacji z tego tematu.

You might also like