我使用 JDK ScheduledThreadPoolExecutor 来做调度工作。我给出如下简单的代码。
class Job implements Callable<Void>{
public Long id;
@Override
public Void call() throws Exception {
if (!isOk(id)) {
return null;
}
_context.exe(id);
return null;
}
void setId(Long id) {
this.id = id;
}
}
每次我添加此作业以安排服务时:
public void schedule() {
Job job = new Job();
job.setId(1L);;
_scheduledExecutor.schedule(job, 1000, TimeUnit.MILLISECONDS) ;
}
该作业将延迟调用上下文的 exe 方法。我的问题:我想调用或不调用断言_context 的exe 方法吗?我怎样才能做到这一点?
我目前所做的,我尝试添加登录 call() 方法并通过我的眼睛验证 UT。PS:对于这个 UT,我也尝试模拟 _context 的 exe 方法,但是作业在其他线程中运行,所以我不能在当前线程中断言它。有人有想法帮我写这个案例的断言吗?
目前我按照以下方式进行,但我仍然认为有更好的解决方案,只是我不知道。
_context 是 Context 的实例,我从这个类扩展而来。
public class UTContext extends Context {
public UTTestCase utTestCase ;
@Override
public void exe(Long id) {
utTestCase.setIsCall(true);
}
public void setUtTestCase(UTTestCase utTestCase) {
this.utTestCase = utTestCase;
}
}
然后我将在 UT 中断言 isCall var。
有没有人对此有好主意,请给我答案。非常感谢。