Uruchamianie testów jednostkowych kodu JS z poziomu Visual Studio

C#, Testy jednostkowe, Visual Studio

Temat testów jednostkowych zagościł na dobre w świecie aplikacji wykorzystujących platformę Dynamics CRM (chciałoby się powiedzieć: „W końcu!”). Ponieważ aplikację XRM stają się coraz bardziej skomplikowane i (co jest znakiem naszych czasów), zależne od coraz większej ilości bibliotek zewnętrznych, pochodzących z poza świata Microsoftu), prawie nikt nie kwestionuje już sensowności wykorzystywania tej praktyki developerskiej, która z kolei w innych obszarach (np. aplikacjach ASP.NET MVC) stała się już codziennością.

Nieodłącznym elementem rozbudowy funkcjonalności systemu Dynamics CRM jest tworzenie ogromnej ilości bibliotek oraz kodu w języku JavaScript. Kod ten powinien być oczywiście testowany.

.YOU_DONT_SAY-362x285

O problemach z tym związanych w kontekście systemu Dynamics CRM pisałem już jakiś czas temu (http://xrmlabs.piotrgaszewski.pl/?p=65 ). Dzisiaj postaram oderwać się od systemu, z którym pracuje na co dzień i naskrobać trochę na temat możliwości jakie mają programiści korzystający z Microsoft Visual Studio, w temacie testów jednostkowych JavaScript, integracji z VS Test Explorerem oraz generalnie pojętej ciągłej integracji.
Poniższe przypadki oparte zostały na analizie dostępnych możliwości, którą wykonywałem dla jednego z klientów. Dla zespołu projektowego (używającego Visual Studio 2013) testy jednostkowe kodu JS uruchamiane z poziomu Visual Studio stanowiły wymaganie typu „must-have”. Pod uwagę braliśmy kolejno:

1. JSTest.NET
Dość dobra biblioteka, której miałem przyjemność używać w jednym z projektów. Niestety, do uruchamiania kodu JS wykorzystuje ona silnik Windows Script Host, który nie jest w 100% zgodny z dialektami Javascript’u, obsługiwanym przez współczesne przeglądarki. Dyskwalifikacja.

2. Chutzpah Test Runner
Dodatek do Visual Studio pozwalający na integrację testów jednostkowych kodu JS (implementowanych a pomocą frameworków QUnit, Jasmine i jeszcze kilku innych) z VS Test Explorerem. Niestety aktualnie rzecz dość mocno niestabilna. Od czasu do czasu potrafi wysypać Visual Studio, czasem też nie widzi wszystkich testów, które mamy zaimplementowane w plikach JS. Ponownie dyskwalifikacja.

3. Aplikacja webowa, uruchamiająca testy za pomocą framworka QUnit.
QUnita przedstawiać prawdopodobnie nie trzeba. Opcja, na którą się zdecydowaliśmy i która co prawda nie integruje się z shellem VS (testy są uruchamiane w przeglądarce internetowej), natomiast jest nieobarczona problemami wyżej wymienionych. Na plus – mamy możliwość importu danych testowych z zewnętrznych plików oraz zarządzania procesem testów wedle własnego widzimisię (chcę mieć 1 test runner dla wszystkich testów – proszę bardzo, chcę testować każdą subdomenę aplikacyjną z osobna – nie ma problemu :)).

4. ReSharper
Słynny dodatek do VS, dysponujący własnym test runnerem, powalającym na uruchamianie testów stworzonych w kodzie JS. Niestety, opcja aktualnie niedostępna dla zespołu projektowego, o którym wspomniałem na początku wpisu (a szkoda, bo jest to rzecz ponoć zacna).

Podsumowując – frameworków do testów kodu JavaScript istnieje na rynku bardzo duża ilość. W przypadku konieczności włączenia tychże testów w procesy ciągłej integracji (przynajmniej dla tych osób, które wykorzystują do tego narzędzia firmy z Redmond) – możliwości są już jednak dużo bardziej ograniczone. Szkoda, że wraz z najnowszą wersją Visual Studio nie doczekaliśmy się chociażby podstawowych funkcjonalności związanych z tym tematem, wbudowanych w „pudełkowe” środowisko programistyczne. Na szczęście Wielki Brat już jakiś czas temu zauważył, że JS stał się dla wielu osób podstawowym językiem programowania aplikacji biznesowych. Jestem pewien, że w tym temacie pojawi się jeszcze w niedalekiej przyszłości wiele ciekawych, nowatorskich narzędzi.

Total Views: 415 ,