Junit單元測試 和 main函數區別 (踩坑)

最近在學習 定時任務時,踩坑…

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 主線程任務=========");
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章