我正在使用 play 1.2.4,并且正在尝试设置单元测试来测试作业。 我的作业每 2 秒运行一次,并根据某些条件更改某些对象的状态。这就是我用来执行此操作的方法。
@Every("2s")
public class GameScheduler extends Job {
public void doJob(){
//Fetch of object from db and status change based on conditions happens here
}
}
现在在我的单元测试中,我设置了这些条件,但我希望测试在获取其中一个设置对象之前等待 3 秒,并对其状态执行断言 Equals 以查看工作是否...做得很好.
如果我使用
pause(3000);
或者类似的东西
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
测试停止,但作业也停止。看起来工作和测试是在同一个线程上的。有没有办法在不停止工作的情况下暂停测试?类似 Controller 中的await()方法
最佳答案
您不需要测试调度程序,因为它应该可以工作(因为框架正在处理它)。您需要的只是测试 doJob 方法是否正在执行其工作。因此,只需编写一个这样的测试:
GameScheduler job = new GameScheduler();
job.doJob();
// assert whatever you want here
关于java - 有没有办法在不阻塞线程的情况下暂停单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425912/