Jak robic unit testy springa? Z definicji unit testy sa szybkie (każdy powinien wykonywać się kilka ms, czyli łącznie w małym projekcie powinno to dać jakies pół sekundy do sekundy), co oznacza że musi się to odbywać bez odpalania springa. Zalinkuje ktoś jakieś materiały?
W sumie jeszcze jedno pytanie xD te testy to co maja testowac? na logike to powinny serwisy testowac, ale da sie w ten sposob controllery?
@Bruno_: unit testy testują najmniejsze mozliwe rzeczy, pojedyncze funkcje które np liczą ci ciąg fibonacciego czy inne bzdety. to o co pytasz to testy integracyjne, wtedy powinien sie odpalać caly spring z jakąs zaseedowaną bazką
@Pan_Qcek: znam roznice miedzy rodzajami testow, we wpisie bardziej mi chodzilo o to czy da sie zrobic unit testy controllera ale w sumie tak jak teraz mysle to integracyjny to by byl z definicji bo sprawdza integralnosc aplikacji czyli w sumie juz sobie sam odpowiedzialem i wpis jest bez sensu ale zostawie go dla potomnych xD
@Bruno_: Zgarniasz Mockito, uzywasz MockitoJUnitRunnera i testujesz każdy serwis osobno, mockując wszystkie jego zależności. W ten sposób w ogóle springa nie używasz a logika serwisowa jest przetestowana ładnie w izolacji.
@Bruno_: pisz tak, żeby jak najmniej używać springa. Wstrzykiwanie przez konstruktor bez kontenera IoC sprawia, że masz pełną kontrolę na swoimi zależnościami.
Zgarniasz Mockito, uzywasz MockitoJUnitRunnera i testujesz każdy serwis osobno, mockując wszystkie jego zależności. W ten sposób w ogóle springa nie używasz a logika serwisowa jest przetestowana ładnie w izolacji.
@Myzreal: i dzięki temu masz testy, które nic nie testują
@Pan_Qcek: Unit testy testują logikę biznesową, a nie "najmniejsze możliwe rzeczy". Jeżeli masz testy na poziomie fasady/serwisu/komponentu, ale nie wykonujesz operacji I/O (a zamiast tego pod spodem uderzasz np. do repozytorium, które jest w pamięci), to nadal takie testy są testami jednostkowymi (mimo że logika, którą testujesz, znacznie wykracza poza pojedyncze funkcje o których mówisz).
@Bruno_: Jeżeli chodzi o testowanie aplikacji Springowych to mam dla Ciebie dwie wiadomości:
@Saly: @zajety_login: xd no jak nic jak testują logikę zawartą w danym serwisie, czystą logikę właśnie. To testy jednostkowe. Jak chcesz (a powinieneś chcieć generalnie) potestować bardziej całościowo to testy integracyjne i wtedy stawiasz jakiś springowy kontener co by zamiast mocków były właściwe fasolki.
Jednostkowymi testujesz pojedyncze metody. Izolujesz się od wywołań wykraczających poza serwis ale testujesz różne przypadki, w tym takie że te wywołania wyrzucą exception, zwrócą
@Myzreal: Nie jestem pewien jak dosłownie mam traktować Twoje zdanie: "mockując wszystkie jego zależności". Zakładając że mamy następujący graf zależności: * ProductController -> ProductFacade -> ProductService -> ProductRepository to czy jeżeli testujesz ProductFacade, to czy ProductService jest zamockowany czy nie?
Jak robic unit testy springa? Z definicji unit testy sa szybkie (każdy powinien wykonywać się kilka ms, czyli łącznie w małym projekcie powinno to dać jakies pół sekundy do sekundy), co oznacza że musi się to odbywać bez odpalania springa. Zalinkuje ktoś jakieś materiały?
W sumie jeszcze jedno pytanie xD te testy to co maja testowac? na logike to powinny serwisy testowac, ale da sie w ten sposob controllery?
Czemu bez odpalania springa? Patrz: pic rel
źródło: comment_m0ITVXYvdWWxXxyb8O2qbUWzDiJO2mRt.jpg
Pobierz@Myzreal: i dzięki temu masz testy, które nic nie testują
@Bruno_: Jeżeli chodzi o testowanie aplikacji Springowych to mam dla Ciebie dwie wiadomości:
Jednostkowymi testujesz pojedyncze metody. Izolujesz się od wywołań wykraczających poza serwis ale testujesz różne przypadki, w tym takie że te wywołania wyrzucą exception, zwrócą
*
ProductController -> ProductFacade -> ProductService -> ProductRepositoryto czy jeżeli testujesz ProductFacade, to czy ProductService jest zamockowany czy nie?
@zajety_login: Jeżeli jest to test jednostkowy to tak - zamockowany.
Ja sobie tego nie wymyślam panowie - pojęcie testów jednostkowych jest konkretnie zdefiniowane, jest o tym pierdyliard materiałów w sieci.
Komentarz usunięty przez autora