W dziedzinie programowania jestem totalnym samoukiem. Ma to dobre strony ale też mnóstwo wad. Przykładowo kiedyś pisząc oprogramowanie nie rozdzielałem warstwy logiki od warstwy prezentacji. Wiem, że to było głupie ale zwyczajnie nie znałem dobrych praktyk bo niby skąd miałem je znać. W sumie o większości z nich prawdopodobnie nadal nie mam pojęcia ale przynajmniej jestem tego świadomy i chcę coś z tym zrobić. Teraz kiedy mam okazję pisać różnego rodzaju soft w ramach stażu sytuacja zaczęła się zmieniać na lepsze.
Ostatnim poznanym przeze mnie narzędziem w programistycznym fachu są testy jednostkowe.
NUnit
Testy w moim projekcie realizuję przy pomocy świetnego frameworku jakim jest jest NUnit. Poniżej pokażę w jaki sposób przetestowałem klasę Integrator, którą opisałem w poście „Całkowanie metodą trapezów w C#”. Dodam tylko, że do tworzenia projektu korzystam z Visual Studio 2015.
Powyższy kod generuje dwa testy. Jak widać testami są publiczne metody odwołujące się w swoim bloku kodu do metod obiektu Assert. W naszym przypadku wywołujemy metodę porównującą ze sobą dwie wartości. Poniżej daję przykład innych metod testujących.
Oczywiście metod jest więcej. Jeśli ktoś jest zainteresowany to odsyłam do dokumentacji.
- Pierwszy z testów sprawdza poprawność działania metody AddSample,
- Drugi sprawdza czy metoda Recalculate oblicza odpowiednią wartość całki z podanych próbek.
Testy możemy uruchamiać pojedynczo albo wszystkie na raz.
Po uruchomieniu testów jesteśmy informowani o ich wyniku. W tym przypadku wszystkie testy przebiegły pomyślnie. Jeśli jednak coś pójdzie nie tak możemy sobie wybrać test, który się nie powiódł i uzyskamy dodatkowe informacje. Poniżej daję przykład takiego testu, którego wynik specjalnie sprowokowałem:
Podsumowanie
Testy jednostkowe zdecydowanie poprawiają komfort pracy. Jeśli dokonamy jakiejś modyfikacji, której nie jesteśmy pewni momentalnie możemy odpalić testy i wszystko staje się jasne. Zdecydowanie zachęcam do korzystania z tego dobrodziejstwa.
Zaznaczam, że dopiero zacząłem swoją przygodę w tym temacie. Jestem otwarty na wszelkie rady i konstruktywną krytykę.
Dodaj komentarz