Mockito - popularny framework do tworzenia atrap obiektów

Co to jest Mockito?

Mockito to framework stworzony dla testów jednostkowych Javy. Stosuje się go do utworzenia atrapy obiektu (Mock'a) w celu zaślepienia funkcji lub weryfikacji zdarzeń na nim wykonanych.

Dlaczego stosuje się mocki?

Testy pisane z atrapami są czytelniejsze i przyjemniejsze do debugowania. Jednocześnie łatwiejsze do napisania, ponieważ autor testu nie musi znać implementacji funkcji aktualnie nietestowanej, która wykorzystywana jest w testowanym fragmencie kodu. Przeznaczamy, dzięki temu, mniej czasu na przygotowanie danych wejściowych i dostajemy gwarancje, że zmiana kodu innej funkcji nie zepsuje stworzonych testów.

Na co pozwala Mockito?

Pierwszą czynnością, którą możemy zrobić to stworzenie atrap obiektów. Pozwala nam to na używanie obiektów jeszcze niezaimplementowanych. Alternatywą tego zastosowania byłoby stworzenie pustej klasy, ale to nie jest ładne rozwiązanie, ani przyjemne, ani wydajne.

Drugą funkcjonalnością jest przypisanie do poszczególnych metod mock'a konkretnego zachowania. Spowodować możemy zwrócenie konkretnej wartości, wyrzucenie wyjątku lub wykonanie konkretnego kodu (zaimplementowanego w specjalnym interfejsie, który generuje nam odpowiedź funkcji). Ciekawym rozwiązaniem jest to, że nie musimy podawać szczegółowych argumentów, która funkcja musi dostać, aby otrzymać zaimplementowaną przez nas odpowiedź od metody. Stosowane do tego są specjalne funkcje dopasowujące obiekty do wymagań. Nie oznacza to jednak, że nie możemy stworzyć odpowiedzi pod konkretne argumenty.

Następnym ciekawym rozwiązaniem jest szpiegowanie obiektów. Wywoływane są wtedy prawdziwe metody. Mamy jednak możliwość zastąpienia ich zaślepkami.

Szpiegowane obiekty i atrapy obiektów możemy weryfikować na podstawie ilości użyć funkcji z odpowiednimi argumentami. Oczywiście, tak jak w przypadku przypisania zachowań, możemy nie podawać konkretnych obiektów, a użyć dopasowacza.

Framework umożliwia również na pisanie przejrzystych testów. Składania pozwala na bardzo przyjemny zapis czynności, które chcemy wykonać. Powodem tego jest zastosowanie nazw funkcji wykorzystując populary styl definiowania zachowania kodu zwanym Given/When/Then.

Gdzie się to przydaje?

Napisać mogę, że wszędzie, gdzie stosujemy testy jednostkowe. Umożliwia nam to wykonanie testów dla bardzo dużych projektów ze skomplikowaną logiką biznesową. Jednakże ułatwia nam też pracę z testowaniem małych programów. Polecam wykorzystywanie frameworku przy stosowaniu stylu programowania TDD. Mockito bardzo ułatwia pisanie prostych testów funkcjonalności, której jeszcze nie ma. Sprawdza się, więc w projektach nad którymi pracuje grupa ludzi. W razie braku jakiejś funkcjonalności po prostu sobie ją zaślepiamy uzgadniając z osobą implementującą wpólny interfejs do niej.

Polecam zapoznać się z kolejnym wpisem, w który pokaże Mockito w akcji.

Comments

Popular posts from this blog

Why TDD is bad practice?

How correctly imitate dependencies?

Software development using Angular 5 with Spring Boot