2009-02-24 16 views
10

Chciałbym wiedzieć, jak wdrożyć testowanie jednostkowe w istniejącej (dość dużej) aplikacji za pomocą Visual Studio 2008 (.net 2.0).Nowe testy jednostkowe

Rozumiem, że opracowywanie testów jednostkowych dla istniejącego/starego kodu jest nierealistyczne, ale chciałbym mieć testy na kod poruszający się do przodu.

Znalazłem wiele przykładów, jak pisać testy kodu, ale nie ma nic, jak skonfigurować go od zera na istniejącym projekcie i jak zintegrować go z cyklem programowania.

Odpowiedz

5

Proste podejście:

  • Wybierz jedną z ram testowych jednostka (NUnit, MbUnit, xUnit, VS ramową testów jednostkowych, ...)
  • Dodaj projekt do testów jednostkowych w roztworze (np UnitTests).
  • Rozpocznij testy pisania.

Dla łatwiejszej organizacji, utworzyć przynajmniej jeden nazw dla każdego projektu w roztworze, na przykład UnitTest.Project1, UnitTests.Project2, ... W zależności od wielkości projektów, należy dodać kolejne poziomy do nazw.

W ten sposób projekt testowy jest częścią rozwiązania. Jeśli używasz narzędzia do ciągłej integracji, testy mogą być automatycznie wykonywane przy każdym zatwierdzeniu do repozytorium kodu źródłowego.

Edit:
chodzi o komentarz na temat problemu MS Jednostka ramowego test z tworzenia testów jednostkowych, nie wiem problem: "Create unit test" wizard does not work. Wygląda na to, że istnieją nieobsługiwane typy projektów, które uniemożliwiają prawidłowe działanie kreatora testów jednostkowych. Próbowałem tylko z jednym rozwiązaniem, które ma jeden F # i kilka projektów C#. Dodałem projekt testowania jednostkowego i próbowałem dodać testy. Kreator testów miał problemy, dopóki nie rozładowałem projektu F #. Wtedy wszystko działało dobrze.

+0

To może być głupie pytanie, ale myślałem, że testowanie jednostkowe zostało "upieczone" w IDE VS 2008, więc do czego potrzebne są ramy testowania jednostkowego? – CodeKiwi

+0

Masz rację. Zapomniałem o tym, ponieważ używam NUnit tylko dlatego, że najlepiej było wybrać 4 lata temu, kiedy rozpocząłem testowanie jednostkowe. – zendar

+0

Próbowałem po prostu dodać testy jednostkowe, używając opcji kontekstowej "Utwórz test jednostki" po kliknięciu prawym przyciskiem myszy na klasie, ale zawsze miałem do czynienia z błędem (nie pamiętam go w tej chwili), ale podejrzewam, że odnosi się on do bezpiecznego interwencyjnego źródła obrazu . – CodeKiwi

1

Bardzo polecam lekturę tej książki: Working Effectively with Legacy Code, jeśli chcesz wykonać test jednostkowy dla istniejącego kodu. Jest to również dobra książka na temat najlepszych praktyk dla testów jednostkowych.

Możliwe jest testowanie jednostkowe w istniejących projektach, ale trzeba wprowadzić pewne poprawki, aby kod mógł być przetestowany. Często problemem jest zbyt wiele zależności.

EDYCJA (po komentarzu) Jeśli naprawdę chcesz osadzić testy jednostkowe w swoim cyklu rozwoju, powinieneś wybrać TDD (Test Driven Development). Celem jest tutaj najpierw napisanie testów jednostkowych, aby dobrze zrozumieć, co zrobią zajęcia. Oczywiście te testy zakończą się niepowodzeniem, ale celem jest doprowadzenie ich do pracy jeden po drugim. Zrób google na TDD, tam jest mnóstwo informacji.

+0

Tak, wiem że to trochę daremne wdrażającego ją na tym etapie, ale jesteśmy coraz możliwość rozpoczęcia ponownie jako projekt greenfield .. ze względu na zmiany architektoniczne, chcę zaimplementować testowanie jednostkowe od samego początku i myślałem, że mam teraz lepszy start ... (stąd pytanie) – CodeKiwi

+0

huh? Nie rozumiem – CodeKiwi

+0

Gerrie, tak TDD jest czymś, co badamy w tej chwili, częścią tego powodu chcę wprowadzić w życie testowanie jednostki teraz, – CodeKiwi

3

Jednym z łatwych sposobów na sprawdzenie istniejącego kodu jest posiadanie zasady pisania testu po wykryciu błędu.

i.e

  • Find bug
  • Zapis test, który recplicates bug
  • Fix
+0

po prostu nie interesuje mnie, zakładając, że masz metodę jednokierunkową (lub zbliżoną do jednego celu), ile testów zazwyczaj stosuje się dla każdej metody (ball park), – CodeKiwi

+0

Wykonaj jeden test dla jakiegoś "przeciętnego" lub "standardowego" zestawu parametrów i upewnij się, że wykonujesz testy dla wszystkich znanych warunków brzegowych (parametry puste, wartości max/min, ...). – zendar

+0

+1 i pisać testy dla każdego nowego kodu, który wchodzi, nie tylko dla błędów. Z czasem to się sumuje. –