最近在學習 定時任務時,踩坑…
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 主線程任務=========");
}