你从外部提供执行者然后verify
。
class MyClass {
private final ScheduledThreadPoolExecutor stp;
public MyClass(ScheduledThreadPoolExecutor ex) { stp = ex; }
public void start() {
stp.scheduleAtFixedRate(executeRunnable(), 2,2, TimeUnit.SECONDS);
}
}
class MyTest {
@Mock
ScheduledThreadPoolExecutor exec;
public void testStart() {
MyClass sut = new MyClass(exec);
sut.start();
verify(exec).scheduleAtFixedRate(any(), eq(2), eq(2), eq(TimeUnit.SECONDS));
}
}
这样,您可以确保课程在预期时间安排可运行文件。如果您想确保可运行的行为,您可以使用ArgumentCaptor
,但我不知道您将如何验证System.out.println()
。
【讨论】: