1. 程式人生 > >Junit單元測試不能測試多執行緒程式

Junit單元測試不能測試多執行緒程式

問題:如果使用Junit單元測試測試多執行緒程式,主執行緒執行完後,執行時間較長的所有子執行緒都會被自動結束。

原因:通過檢視單元測試類TestRunner的部分原始碼,可以看出,呼叫了System.exit()這個方法,這會導致整個jvm結束,所以執行緒都會被結束。TestRunner的部分原始碼如下:

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