了解JUNIT ParentRunner
org.junit.runner.Runner是JUnit的工作引擎。它在诸多类型的支持下,处理测试并产生(Description)、Failure和Result等输出。
Runner的主要类层次如图所示
请参考信息:
【JUnit4.10源代码分析】6 Runner_yqj2065的博客-CSDN博客
Cucumber.Java 代码
try {
Thread.sleep(100);
setScheduler(new RunnerScheduler() {
private final ExecutorService fService = Executors.newScheduledThreadPool(20);
@Override
public void schedule(Runnable childStatement) {
fService.submit(childStatement);
}
@Override
public void finished() {
try {
fService.shutdown();
fService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace(System.err);
}
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
@Override
public void evaluate() throws Throwable {
if (multiThreadingAssumed) {
plugins.setSerialEventBusOnEventListenerPlugins(bus);
} else {
plugins.setEventBusOnEventListenerPlugins(bus);
}
context.startTestRun();
next.evaluate();
}