Mockowanie klasy

Odpowiedz Nowy wątek
2015-05-23 09:17

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

Wybaczcie moją ignorancję, ale nie potrafię zrozumieć podstaw, na czym polega mockowanie interfejsu czy klasy w celu symulowania pobierania danych z bazy danych?

Pozostało 580 znaków

2015-05-23 11:49

Rejestracja: 4 lata temu

Ostatnio: 10 miesięcy temu

Idea mockowania polega na tym, że test jednostkowy musi się wykonywać w izolacji od środowiska. Nie ma więc mowy o połączenu się z bazą danych. Aby możliwe było wytestowanie usługi wykorzystującej bazę koniecznie jest dostarczenie zastępczych danych, aby móc wytestować logikę (np. własnej kolekcji, zamiast kolekcji pobranej z ORMa). Aby dane można było łatwo mockować (kod był testowalny jednostkowo) używa się dependency injection. W tym przypadku usługa pobierająca dane z bazy jest zastąpiona mockiem (którego zachowanie sam konfigurujesz, w zależności od potrzeb testu). Skupiasz się natomiat na wytestowaniu Twojego kodu, lecz zamiast zależności (czyli obiektów wstrzykiwanych np. za pomocą @Autowired, @Inject lub @EJB) wstawiasz mocki. Dzięki temu uzyskujesz izolację testu od innych obiektów, co jest pożądane w unit testach.

Mocki umożliwiają też testowanie interakcji, czyli sprawdzenie czy obiekt testowany zawołał zależność z konkretnymi parametrami, ile razy itp. To się bardzo często przydaje (verify).

Poczytaj o Mockito.

edytowany 2x, ostatnio: margor90, 2015-05-23 15:01

Pozostało 580 znaków

2015-05-23 18:19

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

Czy można zapisywać dane w aplikacji Javy bez bazy danych i innym sposobem niż zapisywanie np. do XML-a?

Pozostało 580 znaków

Świetny Lew
2015-05-23 18:58
Świetny Lew
0

Plik binarny.

Pozostało 580 znaków

Świetny Szczur
2015-05-23 21:43
Świetny Szczur
0

Dane można trzymać bezpośrednio w klasie Mocka.
Np w statycznej tablicy/kolekcji. W końcu to dane statyczne, które przy każdym wywołaniu testu mają być identyczne.

Jeżeli chodzi o baze bez bazy to próbowałeś może baz typu h2o?
Praktyczne do zastosowania w testach.

Baza H2 to jeśli już to w testach integracyjnych (nie jednostkowych). Bo w jednostkowych zawsze powinno się odłączyć od bazy. Nieważne czy bazą jest plik czy XML. To mock powinien być niezależnie zasilany. - margor90 2015-05-23 22:52

Pozostało 580 znaków

Odpowiedz

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