Unit Tests

Marcin Biegała

5 minute read

Dziś wreszcie pojawi się trochę kodu :)
Mam nadzieję, że o zyskach przy okazji pisania testów jednostkowych, czy stosowaniu TDD nie muszę pisać. Jednak te z reguły możemy docenić dopiero w dłuższej perspektywie pracy z projektem. Tu i teraz, w chwili pisania kodu, nie oszukujmy się – jest to dodatkowa praca.
Ale nawet jeśli staramy się trzymać dobrych praktyk, zasad SOLID, a nasze metody są krótkie i przemyślane, zdarzają się projekty gdzie operujemy na rozbudowanych modelach danych, z dużą ilością pól i właściwości.

To odbija się czkawką podczas pisania testów w dwojaki sposób:
– aby przetestować nasze metody, potrzebujemy model wypełniony danymi, już możemy sobie wyobrazić te kilka, kilkanaście linii kodu tylko po to, by odtworzyć pewien stan obiektu i przekazać go do naszej metody w teście
– potrzebujemy porównać czy nasze modele są sobie równe, w rozumieniu że wszystkie ich właściwości są sobie równe.
Oba problemy wydają się trywialne, ale w pewien sposób ‘zatruwają’ nasz kod. Albo nasze testy rozrastają się o kilkanaście linijek nie związanych z ‘intencją’ naszego testu, albo zaczynamy tworzyć całą strukturę, a wręcz framework do naszych testów jednostkowych, żeby w jakiś sposób wyekstrahować ten powtarzalny kod poza pliki testów.
Całość może się odbić negatywnie na naszym zaangażowaniu w testy, bo po prostu nie będzie nam się chciało pisać tego całego dodatkowego kodu, bo przecież zaraz kończę pracę, a sam kod aplikacji już napisałem.

Jak możemy sobie pomóc ? Otóż stosując dwie proste biblioteki: NBuilder i Compare .NET Objects

Marcin Biegała

1 minute read

Dziś krótki wpis, aby przedstawić bardzo ciekawe narzędzie jakim jest NCrunch ( http://www.ncrunch.net/ ).

Jest to plugin do Visual Studio (od wersji 2008 w górę wg. strony, testowałem na 2010 – 2013), który uruchamia testy jednostkowe w tle, gdy my aktualnie myślimy nad rozwiązaniem kolejnego problemu ludzkości.
Na samej stronie http://www.ncrunch.net/ jest screencast, który ładnie obrazuje jak wygląda praca z NCrunch

Poza samym wynikiem testów wtyczka potrafi także wyliczyć pokrycie kodu, ale to co spodobało mi się chyba najbardziej – sprawdza czas wywołania poszczególnych linii kodu. Całość tych informacji jest zmyślnie wyświetlona obok naszego kodu w formie różnokolorowych znaczników.
Na pierwszy rzut oka wygląda dziwnie, ale po paru godzinach taki ‘podręczny’ widok na stopień pokrycia jest naprawdę świetną pomocą.

NCrunch ma też wadę – jest nią cena (przynajmniej w polskich realiach).
Licencja osobista, kosztuje 159 USD, co np. porównując ilość funkcji jaką za podobne pieniądze oferuje np. Resharper, każe się dwa razy zastanowić.

Ale nie ma tego złego! Aktualnie powstaje NCrunch v.2, który na czas wersji Beta jest dostępny za darmo!
Ja już testuje i zacząłem odkładać na licencję po okresie beta – myślę, że warto!

Wymówka, bo ‘TDD zajmuje więcej czasu’ przestaje mieć znaczenie ;)