Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 使用<;即时JUnit测试日志记录;junit>;蚂蚁任务_Ant_Junit - Fatal编程技术网

Ant 使用<;即时JUnit测试日志记录;junit>;蚂蚁任务

Ant 使用<;即时JUnit测试日志记录;junit>;蚂蚁任务,ant,junit,Ant,Junit,在我的build.xml中有以下内容: ... 我希望在每个测试完成后立即报告JUnit结果,不幸的是,JUnit任务仅在整个测试用例完成后才打印测试结果。测试用例(AllTests)相当大,因此我必须等待相当长的一段时间才能得到输出。有没有办法让立即打印单个测试结果?我相信内置JUnit格式化程序会将所有内容缓冲到最后。您应该能够编写自己的格式化程序实现,它扩展了org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatte

在我的
build.xml中有以下内容:


...

我希望在每个测试完成后立即报告JUnit结果,不幸的是,JUnit任务仅在整个测试用例完成后才打印测试结果。测试用例(AllTests)相当大,因此我必须等待相当长的一段时间才能得到输出。有没有办法让
立即打印单个测试结果?

我相信内置JUnit格式化程序会将所有内容缓冲到最后。您应该能够编写自己的格式化程序实现,它扩展了
org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter
,以便它立即刷新到STDOUT,但我从来没有这样做过

您可以使用这个博客,作者在其中创建了一个自定义格式化程序,并在build.xml中显示了代码和如何使用它


还有一个类似的SO问题,信息类似

我按照dkatzel的建议编写了自己的
JUnitResultFormatter
。以下是我的JUnitFormatter的代码:

package-util;
导入java.io.OutputStream;
导入java.io.PrintStream;
导入junit.framework.AssertionFailedError;
导入junit.framework.Test;
导入org.apache.tools.ant.BuildException;
导入org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter;
导入org.apache.tools.ant.taskdefs.optional.junit.junitest;
公共类SimpleTestFormatter实现JUnitResultFormatter{
私有打印流输出=System.out;
@凌驾
公共无效加法器(测试,可丢弃错误){
记录结果(测试,“错误”);
out.println(error.getMessage());
}
@凌驾
public void addFailure(测试、断言失败错误失败){
记录结果(测试“失败”);
out.println(failure.getMessage());
}
@凌驾
公共空隙试验(试验){
记录结果(测试,“通过”);
}
@凌驾
公共无效开始测试(测试){}
@凌驾
public void endTestSuite(JUnitTestSuite)引发BuildException{}
@凌驾
公共void setOutput(OutputStream out){
this.out=新打印流(out);
}
@凌驾
公共无效设置系统错误(字符串错误){
//不回显测试错误输出
}
@凌驾
公共无效设置系统输出(字符串输出){
//不回显测试输出
}
@凌驾
public void StartTestSite(JUnitTestSuite)引发BuildException{}
私有void日志结果(测试、字符串结果){
out.println(“[”+结果+“]”+字符串.valueOf(测试));
out.flush();
}
}
这就是我在Ant脚本中使用它的方式:


...

请注意,必须使用类路径上的
ant.jar
ant junit.jar
编译该类。

感谢您的回答。我已经用代码添加了我自己的答案,因为我认为您链接的示例太长了。