最近在学习 定时任务时,踩坑…
Junit 单元测试 不支持 多线程!!!
当Thread了新的线程后,Junit单元测试 在主线程运行结束后就关闭了,而不会等子线程运行结束。而main函数就不存在这个问题了...
测试对比如下:
Junit
-
书写一个定时任务,每500ms执行一次:
-
运行结果:
可以看出,当主线程执行结束后,就关闭了,不会等 子线程运行
main函数
- 同上,书写一个定时任务,每500ms执行一次:
- 运行结果如下:
解决方案
如果想使用Junit
进行多线程测试,可以先睡眠主线程,例如:
@Test
public void test(){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+ ": ==========Junit 定时任务 =========");
}
}, new Date(), 500);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+ "==========Junit 主线程任务=========");
}