我正在创建一个监视给定目录以进行更改的守护程序。当它检测到更改时,它将使用目录中存在的JUnit运行所有测试。
它通过调用
来实现 private void runTestsInWatchedDirectory(){
TestRunner runner;
runner= new TestRunner(this.dir);
org.junit.runner.JUnitCore.main(runner.getClass().getName());
}
TestRunner是这段代码的一小部分改编:http://burtbeckwith.com/blog/?p=52。
它正确地找到并运行所有测试,但是当它完成后,守护进程终止!我知道JUnit会杀死子线程,但为什么守护进程会死?我该如何解决呢?
答案 0 :(得分:2)
从JUnitCore.java,您可以看到JUnitCore#main
来电System.exit()
:
public static void main(String... args) {
Result result = new JUnitCore().runMain(new RealSystem(), args);
System.exit(result.wasSuccessful() ? 0 : 1);
}
使用类中的其他方法之一,或从runMain中复制代码:
Result runMain(JUnitSystem system, String... args) {
system.out().println("JUnit version " + Version.id());
JUnitCommandLineParseResult jUnitCommandLineParseResult = JUnitCommandLineParseResult.parse(args);
RunListener listener = new TextListener(system);
addListener(listener);
return run(jUnitCommandLineParseResult.createRequest(defaultComputer()));
}