Aplikacje webowe - testy jednostkowe i integracyjne

0

Mówi się że testy jednostkowe powinny być główną częścią testów.
Tylko zastanawiam się jaki w tym jest sens troche w aplikacjach webowych. Weźmy na przykład aplikacje w Spring MVC.
I to mamy layery:

  1. Baza Danych - encje,DAO
  2. Serwisy
    3)Kontrolery i ogólnie warsta HTTP

Czyste resty jednostkowe właściwie to można głównie przeprowadzać w warstwie logiki,np. za pomocą Mockito zamokować DAO no i robić te asercje itp.
Ale zasadniczo DAO też wypada przetestować no i w tym momencie to nie są już de fakto testy jednostkowe no bo podłączamy bazę danych...
Takie kontrolery to zasadniczo też nie testuje się jednostkowo...
Więc jaki jest sens mówienia o tych testach jednostkowych jak dużą część oprogramowania nie da się nią przetestować? No chyba że uznamy że ok. jeśli mamy bazę danych czy embadded czy po prostu taką na której mamy te rollbacki i zawsze wraca do pierwotnego stanu to teoretycznie jest to test integracyjny ale w praktyce bardzo blisko jednostkowemu?

0

W prawdziwym sofcie dao i kontrolery to mniej niż 5% aplikacji. Zresztą nie bardzo wiem co chcesz w nich testować bo zarówno jedno jak i drugie powinno być proste jak budowa cepa.

0

Testy jednostkowe nie nadają się do wszystkiego. W zasadzie tylko i aż do testowania logiki i interakcji pomiędzy obiektami. Wszystko to co można oddzielić od środowiska uruchomieniowego. Pisane testów integracyjnych dla małego projektu (drogich) imo często nie ma sensu. Co innego na wielkich projektach, gdzie bez tego może się nie dać (czy moduły się spinają). Jak masz jakiś if w kontrolerze to można się zastanowić nad napisaniem do niego testu (interakcja warunkowa?). Wiadomo, im prostszy kontroler tym lepiej. To powinien być "głupi" dispatcher. W idealnym świecie kontroler nie powinien mieć żadnej logiki.

Jak łączysz się z bazą to testujesz integracyjnie. Tak samo jak piszesz klienta WebService.

0

W prawdziwym sofcie dao i kontrolery to mniej niż 5% aplikacji.

O ile kontrolery to na ogół nie jest nic trudnego to jednak takie DAO może miec bardziej złożone zapytania które według mnie lepiej przetestować.
Wiadomo że nie chodzi o metody typu get yyy by id
W moim przypadku kontroler to na ogół pobrania danych z serwisu i zwrócenie ich w formie HttpResponseEntity :d

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