语境
我正在使用ant1-9-0.jar
,ant-junit-1.9.0.jar
并ant-launcher-1.9.0.jar
以编程方式运行 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
文件中。
问题
我需要将输出打印到控制台,因为我想要实时结果(不仅仅是在整个过程结束时)。为此,我FormatterElement
在块下方添加了第二个/** Output to file */
:
/* 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 存储库。