저는 스프링 부트로 mockito에서 초보자입니다. 내 문제는, 나는 mockito와 아래의 mockito를 사용합니다.모크 빈 사용 후 실제 메소드를 호출 할 수 없습니다.
@Autowired
private AnotherService anotherService;
@MockBean
private SchedulerService schedulerService;
@Test
public void test() {
NpMesaj npMesaj = new NpMesaj("npMesaj");
when(schedulerService.schedule(any(NpMesaj.class))).thenThrow(new RuntimeException("Error"));
try {
anotherService.start(npMesaj);
} catch (Exception e) {
}
Optional<NpMesaj> npMesajFromDb = repository.findById(npMesaj.getId());
assertThat("A_Err", npMesajFromDb.isPresent(), is(false));
}
SchedulerService는 anotherService.start 메소드에서 사용됩니다. 이 테스트 범위에서 조롱을 받았고 내 주장이 잘 작동합니다. 이 테스트 후에 다음과 같은 MY ANOTHER UNIT 테스트 등급이 실행되고 작동하지 않습니다. 모의 빈 또는 메소드를 포함하지 않습니다.
// Unit Test-2
@Autowired
private DiffService diffService;
@Test
public void test_2(){
int diff = diffService.startDiffProcess();
assertThat("A_Err", diff, is(0));
}
이 시험 방법의 startDiffProcess 메소드 호출은 다음과 같이, 그 안에 anotherService.start 메소드를 호출 : 나는 위의 첫 번째 테스트에서 언급으로
@Autowired
private AnotherService anotherService;
public int startDiffProcess(){
anotherService.start();
return 0;
}
AnotherService이 SchedulerService를 사용합니다. Unit-test-2를 디버깅 할 때 AnotherService의 SchedulerService는 MockInterceptor가있는 mockitoMock으로 간주되어 실제 메소드를 실행할 수 없습니다.
왜 그럴 수 있습니까? 모의 메소드 호출을 재설정 할 수없는 이유는 무엇입니까? 감사합니다. .
더 많은 테스트 클래스를 표시 할 수 있습니까? 클래스 수준의 주석? 어떻게 테스트를 실행합니까? –