Mockowanie klasy

0

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

1

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.

0

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

0

Plik binarny.

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.

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