Junit單元測試不能測試多執行緒程式
阿新 • • 發佈:2019-02-09
問題:如果使用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);
}
}