上下文
我正在使用 ant1-9-0.jar
, ant-junit-1.9.0.jar
和 ant-launcher-1.9.0.jar
来以编程方式运行 JUnit 测试。
在我的代码中,我有一个返回 JUnit 任务 的函数:
/**
* Generates a JUnit task which runs every single test in a new JVM
* @return task The JUnit task
* @throws Exception
*/
public JUnitTask generateRunTestsTask() throws Exception {
/* New JUnit task */
JUnitTask task = new JUnitTask();
task.init();
/* Summary settings */
JUnitTask.SummaryAttribute sa = new JUnitTask.SummaryAttribute();
sa.setValue("withOutAndErr");
task.setPrintsummary(sa);
/* JVM configuration */
task.setFork(true);
task.setDir(new File(this.deliveryBinDir));
task.createJvmarg().setValue("-Duser.dir=" + this.deliveryBinDir);
/* Output to file */
FormatterElement.TypeAttribute typeFile = new FormatterElement.TypeAttribute();
typeFile.setValue("xml");
FormatterElement formatToFile = new FormatterElement();
formatToFile.setType(typeFile);
task.addFormatter(formatToFile);
/* Task options */
task.setHaltonfailure(false);
task.setShowOutput(true);
task.setOutputToFormatters(true);
List<String> testSuites = getTestJarList(this.deliveryLibFolder);
for (String singleSuite : testSuites) {
JUnitTest test = new JUnitTest(singleSuite);
/* Sets reports location */
test.setTodir(this.testReportsFolder);
task.addTest(test);
}
return task;
}
JUnit测试运行正常,输出已成功存储到`.xml`文件中。
问题:
我需要将输出打印到控制台,因为我希望能够实时得到结果(而不仅仅在整个过程结束时)。为此,在`/** Output to file */`块下方添加了第二个`FormatterElement`。
/* Output to screen */
FormatterElement.TypeAttribute typeScreen = new FormatterElement.TypeAttribute();
typeScreen.setValue("plain");
FormatterElement formatToScreen = new FormatterElement();
formatToScreen.setType(typeScreen);
formatToScreen.setUseFile(false);
formatToScreen.setOutput(System.out);
task.addFormatter(formatToScreen);
但是我的控制台仍然没有显示日志。我也尝试了删除
formatToFile
FormatterElement
,但没有成功。你有什么建议吗?注:
- 这些单元测试确实需要被分叉,不能被更改。
- 如果需要更多代码,请告诉我,例如Ant Project或Ant Target的设置。
- 单元测试确实包含
Sysouts
。 - 我已经复制了一个可行的
build.xml
文件。 - 这里是Apache Ant JUnit存储库(如果需要)。
setOutput
的调用,但是没有任何改变。我还删除了默认为true
的setShowOutput(true)
和setOutputToFormatters(true)
。 - Stéphane Bruckert