#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 ()!