W Visual Studio od jakiegoś czasu brakowało mi plugina/feature’a, który uruchamiałby testy jednostkowe za każdym razem, kiedy wprowadzałbym większe zmiany w projekcie. Taka funkcjonalność jest co prawda dostępna w moim ulubionym IDE, tyle że w wersji Enterprise, za którą, trzeba słono zapłacić. Chodzi mi tu o Live Unit Testing. Inne komercyjne rozwiązania to plugin NCrunch i dotCover. Dlatego postanowiłem opracować własne rozwiązanie, pokaże teraz Ci jak to zrobiłem.

Tool do monitorowania zmian na plikach

Znalazłem w sieci tool, który spełniam moje wymagania odnośnie monitorowania zmian na plikach
(w moim przypadku chodzi oczywiście o dllki), nazywa się File Watcher Simpl i można go pobrać chociażby stąd sourceforge

1. Wskazanie folderu do monitorowania

2. Określenie na jakie zdarzenia ma reagować

3. Ustawienie filtru – interesuje mnie wyłącznie moja własna dllka z projektu z kodem źródłowym, nie z unit testami

4. Opcjonalne – ustalenie jak często ma reagować na zdarzenia

Nie chcę, żeby testy były odpalane za każdym razem kiedy kompiluję mój projekt, gdybym tak chciał to wystarczyłoby odznaczyć tę opcję „Supress duplicated…”. W przypadku tej konfiguracji jak na screenshocie, testy będą odpalane nie częściej jak co 20 min (jak zrobię build projektu)

5. Wskazanie programu, który ma zostać uruchomiony w reakcji na dane zdarzenia (o tym programie napiszę niżej)

6. Ustalenie parametrów dla uruchamianego programu – w tym przypadku jest to plik bat

Plik wsadowy (bat) uruchamiający testy

Testy napisałem w Nunit, dlatego uruchamiam nunit3-console i generuję raport, zapisuję wynik wykonania testów do pliku.
Jeśli testy się nie powiodą to wyświetlam wynik w przeglądarce.

MSBuild.exe "%~dp0..\tests\DMMBrowser.Test\DMMBrowser.Test.csproj"

nunit3-console.exe "%~dp0..\tests\DMMBrowser.Test\bin\Debug\DMMBrowser.Test.dll" --result=dmmbrowser.report.html;transform=%~dp0..\tools\nunit\html-report.xslt
IF %ERRORLEVEL% NEQ 0 (
  start "" "dmmbrowser.report.html"
  exit /b %ERRORLEVEL%
)

*Pliki transformacji XLST dla Nunita: https://github.com/nunit/nunit-transforms/tree/master/nunit3-summary

Własny program do wyświetlania notyfikacji 

github: https://github.com/akuczynski/ContinousTesting

Jest to mała aplikacja WinForms, która uruchamia przekazany jej jako argument plik wsadowy w tle i w zależności od zwróconego kodu błędu wyświetla notyfikację o sukcesie lub porażce.

That’s all folks !

One Thought on “Continous Testing”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *