Сбой теста Mockito — На самом деле, с этим макетом не было никаких взаимодействий

#unit-testing #mockito #junit4 #springrunner

Вопрос:

Есть ли какой-либо другой способ написать тестовый случай для приведенного ниже случая, необходимо написать тестовый случай для метода runStudentService . Попытался написать тестовый пример, как показано ниже, но его бросок : «хотел, но не вызвал — на самом деле, с этим макетом было нулевое взаимодействие».

     @Component
    public class StudentScheduler {

    @Autowired
    private StudentService studentService;

    
    @Scheduled(cron = "${cron.students}")
    public void runStudentService() {
        try {
            studentService.startStudetsTest();
        } catch (Exception e) {
            LOG.error("Error occured during test"   e);
            throw(e);
        }

    }
}

    @RunWith(SpringJUnit4ClassRunner.class)
    public class StudentSchedulerTest {

    @Mock
    private StudentService studentService;

    StudentScheduler scheduler = Mockito.mock(StudentScheduler.class);

    
    @Test
    public void jobRuns() {
        Mockito.doNothing().when(scheduler).runStudentService();
        verify(scheduler, Mockito.times(1)).runStudentService();
    }
    
}

 

Ответ №1:

Ваш класс mocked StudentScheduler не использует ваш экземпляр mocked StudentService. Дважды проверьте, что экземпляр StudentService внутри функции runStudentService() является тем же экземпляром, что и ваш макет StudentService.

Передайте этот издевательский экземпляр StudentService в вызываемую функцию runStudentService ()!