Testy w Spring boot

0

Zastanawiam się, które metody z których klasy powinienem testować. Mam do wyboru :

service - jest tam cała logika, mieszają się różne service, wstrzykiwane jest dao,odbywają się zapisy do bazy itp
rest controller - wywoływane są tu metody service na odpowiednich url, ResponseEntity z HttpStatus i HttpHeaders .

2

Testy serwisów -> jednostkowe, mokujesz dao i sprawdzasz czy się dobrze wywołało i czy dobra logika zaszła
Testy DAO -> integracyjne, sprawdzasz czy faktycznie w bazie się zapisało (po teście rollback oczywiście)
Testy kontrolerów -> jednostkowe, trochę tam mockowania będzie, ale z pomocą przyjdzie mockMvc i wtedy sprawdzasz czy odpowiednie metody serwisowe się wywołują

0

ok czyli tak naprawdę prawie całą strukturę aplikacji:
dao,service i controller. A jakie narzędzie ? Ponieważ znam bardzo podstawy Spock i JUnit i chciałbym coś z tych dwóch poznać lepiej.

0

http://4programmers.net/Forum/Inzynieria_oprogramowania/276798-wstrzykiwanie_zaleznosci_a_testyjednostkowe-_zloty_srodek?start=20
tutaj masz dysputy na ten temat, problem w tym ze ciezko cos wywnioskowac, bo co czlowiek to trzy opinie.

0

Czy testy moga byc tranzakcyjne czy raczej powinno sie tego unikac?

0

@wartek01:
http://www.nurkiewicz.com/201[...]-transactional-tests.html?m=1

Osobiscie wolalem miec transactional na serwisie. A testy tranzakcyjne to moim zdaniem czasem udawanie, ze cos dziala...

0
Bialy napisał(a):

@wartek01:
http://www.nurkiewicz.com/201[...]-transactional-tests.html?m=1

Osobiscie wolalem miec transactional na serwisie. A testy tranzakcyjne to moim zdaniem czasem udawanie, ze cos dziala...

Nie do końca rozumiem. Co ma @Transactional w serwisie do testowania jedbostkowego?

Jeśli chcesz przetestować serwis to mockujesz DAO i testujesz na mocku (czy serwis wywołuje metodę z DAO z odpowiednim parametrem). Wtedy odcinasz się od dbania o zawartość bazy danych.

0

@wartek01:
No nie chodzi mi o testowanie jednostkowe a integracyjne.

I chodzilo mi o uzycie adnotacji @transactional na tescie. Co osobiscie mi sie nie podoba. Wole tylko na serwisie/dao cokolwiek ale nie tescie.

0

Biały, transkacje normalnie są na obiektach z logiką bizensową, ale jeśli mamy testy endpointowe zamiast jednostkowych to oznaczamy je @Transactional żeby po wykonaniu testu inserty, updaty i delejty się zrollbackowały ;)
Ogólnie to polecam Spocka i Grooviego to testów :)

0
scibi92 napisał(a):

Biały, transkacje normalnie są na obiektach z logiką bizensową, ale jeśli mamy testy endpointowe zamiast jednostkowych to oznaczamy je @Transactional żeby po wykonaniu testu inserty, updaty i delejty się zrollbackowały ;)
Ogólnie to polecam Spocka i Grooviego to testów :)

Wiem to wszystko.
Ale dalej nie raz mialem jakies problemy w stylu, ze test dzialal bo byla nad nim adnotacja transactional a w normalnej aplikacji okazywalo sie, ze cos jednak nie dziala. I ten transactional ukryl bląd.

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