
W tym wpisie przybliżę stosowanie adnotacji z freamworks Mockito z uwzględnieniem Junit4 i Junit5.
Aby móc skorzystać z adnotacji z Mockito należny nad klasą dodać dla Junit4: @RunWith(MockitoJUnitRunner.class) natomiast dla Junit5 jest to: @ExtendWith(MockitoExtension.class) i już można dodawać kolejne adnotacje. Dodatkowo biblioteka Mockito2 pozawala na zamieszczenie jeszcze jednej adnotacji nad klasą testową. Jest to: @MockitoSettings. Adnotacja ma do wyboru opcje strictness z której można wybrać klasę Strictness a z niej: LENIENT, STRICT_STUB lub WARN. W naszym przykładzie jest zastosowana pełna adnotacja: @MockitoSettings (strictness = Strictness.STRICT_STUBS) – ponieważ chodzi o zwiększenie restrykcyjności. Powinno pozwolić to na bardzo dokładne sprawdzenie tego w jaki sposób korzystamy z mocków i stubów w testach. Wpływa również na szybsze i lepsze wykrycie błędów. Domyślnie opcja ustawiona jest na WARN.
Adnotacja @InjectMocks – określa w której klasie będą znajdować się jakieś zależności które w testach zamieniamy w mocki i których działanie będziemy chcieli programować lub weryfikować. W naszym przykładzie będzie to klasa CartService ponieważ posiada zależność którą jest CartHandler. I nad klasą CartService ustawiamy adnotacje @InjectMock.
Natomiast adnotacja @Mock określa dany obiekt mockowy, i jest ona tożsama z metodą mock. W naszym przykładzie mockowany będzie interfejs CartHandler i nad tym polem ustawiamy adnotacje @Mock. Zobaczmy jak wygląda taki przykład:
@MockitoSettings (strictness = Strictness.STRICT_STUBS) @RunWith(MockitoJUnitRunner.class) lub @ExtendWith(MockitoExtension.class) class CartServiceTest { @InjectMocks private CartService cartService; @Mock private CartHandler cartHandler;
Dzięki tym adnotacją nie potrzeby tworzenia w metodach testowych instancji interfejsu. A co za tym idzie nie powtarzamy kodu.
Dodaj komentarz