TDD, testowanie aplikacji springowych.

0

Ostatnio zainteresowałem się tematem TDD.
Obejrzałem kilka prezentacji na ten temat i podejście test first wydaje mi się fajne, ale

dla prostych metod np. dodawania, odejmowania itd pisanie testów first wydaje się być banalne ale aktualnie pracuje nad projektem springowym, dużo zależności, dużo wstrzykiwania zależności.
Jak testować takie metody które wymagają duzo zależnosci, mockowanie wszystkiego wydaje się slabe a stubowanie z fixowanym zwrotem wydaje się być bezsensu.
Drugie pytanie, aplikacja dzielona jak tysiące innych controller/serwis/repo. Testować wszystko? Dla controllerów wysyłąć zapytania i sprawdzać co zwraca, dla serwisów i repo pisać testy z danymi ktore fixujemy?

Każda porada dot. testów i pisania ich bedzie pomocna, dziekuje

0

Pisać kod taki który nie ma dużo zależności :D
Nie testujesz kodu tylko zachowania, dlatego nie ma sensu testować kontrolerów bo nie powinno być tam logiki.
Jest pewna dość kontrowersyjna metoda, czyli napisanie części logiki aplikacji niezależnej od frameworków (to akurat jeszcze nie jest kontrowersyjne, a zalecane) i potem do testów startować całą tę warstwę. Musisz sobie napisać niestety klasę która będzie udawała context springowy (czyli tworzyła obiekty i wstrzykiwała je sobie nawzajem), ale może być to upierdliwe dla dużych systemów. Możesz wtedy testować zachowanie całej aplikacji, przy jakichś tam warunkach. Niestety nie zawsze ta drogą jest wygodniejsza, wszystko tak na prawdę zależy jaki to system, jak duży, co robi i co potrzebujesz testować

0

Tutoriale Spring Boota pokazuję z grubsza jak można testować te Springowe rozwiązania. Ja już teraz repozytoriów nie testuję, jedynie kontrolery i serwisy. No chyba, że repo ma jakieś nadpisane natywne zapytanie, no to samo przez się sie rozumie. Generalnie Spring Data mnie nie zawodzi.

Ja osobiście przeszedłem drogę przez mękę jak miałem testować w c**** powiązane serwisy (abstrachując od wysokiej kohezji).
Książki o TDD pokazują tylko koncepcję, a później z frameworkami trzeba głowić się samemu.

1

Akurat o testowaniu wszystkiego dowiedzialem sie z tego filmu

Tam dziewczyny testuja doslowie wszystko

0

To ja odpowiem, jak ja to robię w dużym systemie.
Przede wszystkim rozbieram zadanie na mniejsze części i tworzę dla nich specyfikacje - czyli testy, które określają, jakie powinno być działanie danej metody.
No i tutaj normalny tryb czerwony-> zielony-> refaktor.
Jak już mam te "komponenty" przetestowane jednostkowo, to pisze test integracyjny, aby sprawdzić, czy wszystko razem działa.
Jako mul książkowy, polecam dwie pozycje: TDD. "Sztuka tworzenia dobrego kodu" - Kent Beck i TDD. "Programowanie w Javie sterowane testami" - Viktor Farcic, Alex Garcia

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