我想测试我的计划任务,所以我按照这个教程
@SpringJUnitConfig(SchedulerConfig.class)
public class MailJobFinderTaskIT {
@SpyBean
private MailJobFinderTask mailJobFinderTask;
@Test
public void whenWaitThreeSecond_ThenTaskCalledThreeTimes(){
await()
.atMost(Duration.ofSeconds(3))
.untilAsserted(() -> verify(mailJobFinderTask, atLeast(3)).findEmailJobs());
}
}
但实际上它不起作用,因为以下错误
org.mockito.exceptions.misusing.NullInsteadOfMockException:
Argument passed to verify() should be a mock but is null!
Examples of correct verifications:
verify(mock).someMethod();
verify(mock, times(10)).someMethod();
verify(mock, atLeastOnce()).someMethod();
not: verify(mock.someMethod());
Also, if you use @Mock annotation don't miss initMocks()
这是我的任务班的签名
@Component
public class MailJobFinderTask extends SuppressedLogPoller {
....
}
@Scheduled(fixedRate = 1000)
public void findEmailJobs() {
.
.
}
我已经尝试将注释更改为 @SpringBootTest 并且还尝试使用 @MockBean 而不是 @SpyBean 但没有任何成功。其实我不明白为什么我的 bean mailJobFinderTask 没有创建