Ilość asercji w jednym teście jednostkowym

0

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 :)

3

To jest jedna asercja ale koncepcyjnie a nie że sprawdzasz że jedno pole uległo zmianie i nie możesz więcej asercji pisać.

1

a czemu by nie zrobić:

assertEquals(przygotowanyObiektPoprawny, wynikDzialaniaMedoty);
1

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? ;)

2

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.

0

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ć :)

2

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.

0
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 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1