關於JUnit4無法支持多線程測試的解決方法


轉自:https://segmentfault.com/a/1190000003762719

其實junit是將test作為參數傳遞給了TestRunner的main函數。並通過main函數進行執行。

test函數在main中執行。如果test執行結束,那么main將會調用System.exit(0);即使還有其他的線程在運行,main也會調用System.exit(0);

System.exit()是系統調用,通知系統立即結束jvm的運行,即使jvm中有線程在運行,jvm也會停止的。所以會出現之前的那種情況。其中System.exit(0);的參數如果是0,表示系統正常退出,如果是非0,表示系統異常退出。

junit.textui.TestRunner
 public static void main (String[] args) {
      TestRunner aTestRunner = new TestRunner();
      try {
        TestResult r = aTestRunner.start(args);
       if (!(r.wasSuccessful()))
          System.exit (1);
       System.exit(0);
      } catch (Exception e) {
       System.err.println(e.getMessage());
        System.exit(2);
      }
   }

  我用GroboTestingJUnit-1.2.1-core導入工程就能用JUnit進行多線程測試了

下載地址:

https://download.csdn.net/download/wangqingqi20005/9636371

——————————————————2018-4-15日更新————————————————————————

最好還是用main進行多線程測試,就算導入了GroboTestingJUnit-1.2.1-core.jar包還是會有bug

首先是代碼部分:

thread2

運行部分代碼:

test10運行結果:

main運行結果:

 結果一目了然,不相信的同學可以試一下,我是推薦用main進行測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM