Przegląd adnotacji w Mockito
W ramach tego wpisu zrobimy przegląd wszystkich dostępnych w Mockito adnotacji. Skupimy się na tych, które są częścią API, pominiemy natomiast te wewnętrzne. Przegląd będzie w kolejności alfabetycznej.
@Captor
Umożliwia wygodne tworzenie Argument Captor czyli mechanizmu do przechwytywania wartości parametru z jakim został uruchomiony mock.
@DoNotMock
Adnotacja do oznaczania typów, które nie powinny być mockowane. Zamiast tego należy użyć innych sposobów dostarczania implementacji w celach przeprowadzenia testów.
@Incubating
To tzw. "Marker interface" - w tym przypadku do oznaczania funkcjonalności, które należy traktować jako testowe, w fazie inkubacji (stąd nazwa). W wersji 4.8.0 znalazłem tylko jedno odwołanie do tej adnotacji, w dokumentacji opisującej mockowanie klas i metod finalnych.
@InjectMocks
Tworzy wskazany obiekt i wstrzykuje do niego mocki. Używany w połączeniu z MockitoAnnotations.openMocks().
@Mock
Tworzy mock. Używany w połączeniu z MockitoAnnotations.openMocks().
@NotExtensible
Kolejny marker interface. Oznaczone nim klasy nie powinny być rozszerzane. Z tego co rozumiem, autorzy biblioteki nie chcą ustawiać klas jako finalne, bo rozszerzanie klas powinno być możliwe przy tworzeniu rozszerzeń do Mockito, ale raczej nie jest to typowe wykorzystanie tej biblioteki.
@Spy
Tworzy spy'a, połowiczny mock. Można dzięki temu zmockować tylko część metod w klasie, a dla pozostałej części pozostawić oryginalną funkcjonalność. Używany w połączeniu z MockitoAnnotations.openMocks().
@MockitoSettings
Ta adnotacja pochodzi z dodatkowej biblioteki org.mockito:mockito-junit-jupiter, a nie org.mockito:mockito-core jak wszystkie do tej pory. Można jej użyć zamiast @ExtendWith(MockitoExtension.class). Pozwala na ustawienie poziomu surowości (ang. strictness) dla mocków. Domyślny poziom to Strictness.STRICT_STUBS, co znaczy tyle, że Mockito rzuci wyjątkiem jeśli na mocku zostanie zdefiniowane zachowanie, ale nigdy nie zostanie ono wywołane. Wskazuje to na niepotrzebne akcje w teście i w związku z tym jest odradzane.
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.