W sytuacji, gdy piszemy testy JUnit dla klasy, która posiada pola ustawione poprzez dependency injection, niejednokrotnie pojawia się problem ustawienia tych pól. Z pomocą przychodzi nam tutaj Mockito.
Rozpatrzmy to na przykładzie. Mamy servis, który chcemy przetestować:
@Service("customerCheckService") public class CustomerCheckServiceImpl implements CustomerCheckService { @Autowired CustomerDao customerDao;
Jak widzimy customerDao jest wstrzyknięty poprzez Autowired. Pisząc test musimy wstrzyknąć to dao do serwisu.
I tutaj z pomocą przychodzi nam Mockito i odpowiednie anotacje.
Pierwszym krokiem jest stworzenie mocka klasy (customerDao), która ma zostać wstrzyknięta. Odbywa się to poprzez anotację @Mock.
@Mock CustomerDao customerDao;
Następnie musimy odpowiednie zanotować klasę, do której mają zostać wstrzyknięte nasze mocki. Wykorzystujemy tutaj kolejną anotację: @InjectMocks, która zadba o to, aby wszystkie pola ustawiane poprzez wstrzykiwanie zostały ustawione.
@InjectMocks CustomerCheckServiceImpl customerCheckService = new CustomerCheckServiceImpl();
Musimy pamiętać jedynie, aby wcześniej zostały stworzone odpowiednie mocki.