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);
        }
    }

你可能感兴趣的:(多线程技术)