Siemka. Piszę z pytaniem o to co i jak dokładnie sprawdzać w teście jednostkowym według dobrych praktyk. Wyobraźmy sobie, że modyfikujemy w metodzie cześć bardziej skomplikowanego obiektu, lub zwracamy nowy, częściowo na podstawie starego. Jak dokładne powinno być sprawdzenie ? Tylko zmodyfikowane pola , czy wszystkie ? Co np. z podobiektami ? Może wystarczy sprawdzić ich hashcode ? Do tej pory jak pisałem zawsze wolałem napisać kilka asercji więcej, jednak czytając rozdział o testach w książce Clean Code zwątpiłem w moje podejście. Z góry dzięki za pomoc :)
To jest jedna asercja ale koncepcyjnie a nie że sprawdzasz że jedno pole uległo zmianie i nie możesz więcej asercji pisać.
a czemu by nie zrobić:
assertEquals(przygotowanyObiektPoprawny, wynikDzialaniaMedoty);
Tylko zmodyfikowane pola , czy wszystkie ?
Jeśli możesz to wszystkie, to Cię uchroni przed zapomnieniem napisania testu dla jakiegoś property
.
Co np. z podobiektami ?
Same, zawsze możesz sobie stworzyć metodę, w której zawrzesz wszystkie potrzebne asercje. Swoją drogą AssertJ i custom assertions to rigcz.
...jednak czytając rozdział o testach w książce Clean Code zwątpiłem w moje podejście.
To mają być wskazówki.
Do tej pory jak pisałem zawsze wolałem napisać kilka asercji więcej,
I słusznie, ważniejsze jest sprawdzenie wszystkiego porządnie czy 5 linijek kodu mniej? ;)
Chodzi o ideę a nie o liczbę linijek "assert". Masz napisać test który sprawdza jedna konkretna rzecz, np. shouldReturnXWhenYHappens
, ale sama walidacja X może wymagać kilku asercji dla czytelności.
Dzięki za odpowiedzi. Zawsze starałem się sprawdzić jak najwięcej by mieć później pewność, że nie ma żadnych dziwnych efektów i potrafiło wyjść trochę tych asercji. Czasem człowiek musi się upewnić :)
I Pan powiedział: Wpierw napisać musisz testu warunki początkowe, później opisać akcję, potem masz napisać trzy asercje, nie mniej, nie więcej. Trzy ma być liczbą asercji, i liczbą tą ma być trzy. Czterech nie wolno ci napisać, ani dwóch. Masz tylko napisać trzy. Pięć jest wykluczone. Gdy liczba trzy jako trzecia w kolejności osiągnięta zostanie, wówczas wykonać musisz test, a wówczas on kitę odwali. Amen.
twoj_stary_pijany napisał(a):
Czterech nie wolno ci napisać, ani dwóch. Masz tylko napisać trzy. Pięć jest wykluczone.
Spokojnie. Aż tak źle ze mną nie jest :)
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.