środa, 20 października 2010

Debugowanie testów jednostkowych NUnit

Główną rolą testów jednostkowych jest wspomaganie wytwarzania oprogramowania poprzez testowanie element po elemencie (jednostce) całego rozwiązania. O ich zaletach nie trzeba się specjalnie rozwodzić ponieważ temat ten był i wciąż jest wałkowany na wielu blogach i serwisach tematycznych. Istotne jest, że po uruchomieniu testu wiemy co poszło nie tak, gdzie oraz jaki wynik powinniśmy otrzymać, a jaki otrzymaliśmy. W tym wszystkim zawsze brakowało mi jednak dokładnej wiedzy dlaczego coś poszło nie tak. Stąd możliwość debugowania testów jednostkowych wydaje się bardzo kusząca. W przypadku NUnit problemem okazuje się fakt, że testy wykonywane są w osobnym wątku niezależnie od Visual Studio. Dlatego nie jest ważne czy korzystamy z GUI (nunit.exe) czy dodatków typu TestDriven.Net, ponieważ VS i tak nie zatrzyma się na wstawionych breakpointach. Istnieje na szczęście możliwość podpięcia się pod proces wykonujący testy. W tym celu należy (algorytm dla VS 2010):
  1. Skompilować test
  2. Uruchomić nunit.exe i załadować przygotowany plik testów (przydatne jest użycie nunit.exe jako zewnętrznego narzędzia VS co zautomatyzuje część czynności)
  3. W Visual Studio wybrać opcję Debug->Attach to Process
  4. W nowym oknie z listy dostępnych procesów wybrać nunit-agent.exe i kliknąć Attach
Po tych czynnościach VS przełączy się w tryb debugowania tak jakby sam uruchomił instancję debugowanego programu. Od tego momentu jeżeli z poziomu GUI NUnit uruchomiony zostanie test zawierający punkt przerwania, kontrola zostanie przekazana do VS, a my będziemy mogli krok po kroku podpatrzeć co się dzieje.

Brak komentarzy:

Prześlij komentarz