Aktywne Wpisy

vieniasn +22
jaka jest wasza ulubiona gra wideo? (oprócz tfu gothica dziadki)

PierdekAlonso +186
Nigdy w życiu nie używałem petard, ale w tym roku na sylwestra nakupie ze 100 achtungów i bede przez cały dzień puszczał na pohybel kundlom i ich właścicielom (。◕‿‿◕。) Dość dyktatury psiarzy w tym kraju
#psiarze #patologiazmiasta #psy #smiesznypiesek #polska #pieseczkizprzypadku #sylwester #petardy
#psiarze #patologiazmiasta #psy #smiesznypiesek #polska #pieseczkizprzypadku #sylwester #petardy
źródło: image
Pobierz




Polecicie jakiś tutorial do pisania testów jednostkowych aplikacji w Springu? (Najlepiej przy użyciu JUnit, Mockito.)
Większość tutoriali o testach skupia się na samym JUnit albo o tym jak w teorii pisać testy.
Samego JUnita nauczyć się jest łatwo, a teorię o tym jak i co powinno się testować to potem sobie doczytam.
Nie ogarniam trzech rzeczy:
1. Całej tej otoczki Springowej. (Samego Springa bez testów znam.)
- Kiedy jakiego użyć Runnera (w ogóle co to i po co jest), jak uruchomić kontekst Springa (a co jak mam w innym module Mavenowym), jak użyć konfiguracji application.properties i plików z resources z projektu, a nie tylko z folderu test (bo nie chce kopiować wszystkiego i potem 2x zmieniać), ale jak móc mieć konfigurację do testów, w której nadpiszę tylko niektóre rzeczy; jak używać Mockito do mockowania beanów (a nie jak zwykłych klas) itd.
2. Co mockować przy funkcjonalnościach z IO?
- Przykładowo jakaś funkcjonalność, która coś zapisuje do bazy, coś zapisuje na dysk, pobiera coś REST-em i wykonuje pomiędzy tym jakąś logikę.
- Czy mam zamockować wszystko co wchodzi i wychodzi z aplikacji (np. metodę zapisu na dysk i udawać, że ona się zawsze udaje), żeby przetestować samą logikę? Mockować moje prywatne metody, które robią coś na IO czy bazowe metody (np. z bibliotek czy samej Javy)?
- A co jak logika jest bardzo prosta, a właśnie operacje IO są bardziej skomplikowane (np. przenoszenie jakiś plików, tworzenie folderów itd)? Mockując IO nie przetestuję tej logiki (np. że będzie duplikat nazwy pliku w folderze).
3. Testować kontrolery czy serwisy?
- Pisać test na serwis, który przyjmuje biznesowe obiekty czy mockować cały kontroler i udawać, że wysyłam zapytanie. To drugie jest dla mnie trudniejsze, bo muszę korzystać z mechanizmów Springowych do testów, których nie znam; ale widzę, że tak jest w większości tutoriali.
jeśli chodzi ci o SpringRunner.class to jest to skrócona wersja SpringJUnit4ClassRunner.class (patrz dokumentacja co to
Poczytałbym sobie taki tutorial/książkę/kurs lub jakiś projekt open source, to pewnie bym sam znalazł odpowiedź na większość pytań zamiast kogoś pytać o takie podstawy.
O jakimś runnerze jeszcze powinienem wiedzieć / któregoś używać? Bo który tutorial nie otworzę, to wszędzie jest co innego...
@RunWith(SpringRunner.class)to mam kontekst Springowy, bo mam dostęp do beanów (tak mi się wydawało).Testy na każdą klasę?
- Ale tylko na każdą serwisową? Chyba nie na klasy modelu, entity, dto, enumów itd?
- A jak wydzieliłem jakąś klasę z innej (i nigdzie indziej jej nie używam), to też powinienem napisać do niej testy? Przecież pokrycie kodu testami będzie takie samo i funkcjonalność przetestowana taka sama. Chyba
Modele,entity, dto i enumy zostana pokryte przy okazji pisania junitow na serwisy/controllery.
Nikt nie uzywa package privateow oprocz Ciebie, ale Ty uzywasz, wiec powinienes to
Jeśli testujesz metodę kontrolera który wola serwis który jedyne co robi to wola repo żeby zapisać encje - robisz to źle. W ten sposób przetestowales czy spring działa. Pracownicy pivotala pewnie się ucieszą z dodatkowego testu ( ͡° ͜ʖ ͡°)
Kluczem nie jest 100% coverage-u tylko mądre przetestowanie funkcjonalności, logiki biznesowej