立即JUnit测试记录以&lt;&JUnit的GT; Ant任务 [英] Immediate JUnit test logging with <junit> Ant Task
本文介绍了立即JUnit测试记录以&lt;&JUnit的GT; Ant任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在下面我的build.xml
:
<junit fork="yes" printsummary="yes" filtertrace="yes">
<classpath>...</classpath>
<test name="tests.AllTests"/>
<formatter type="plain" usefile="false"/>
</junit>
我想JUnit的结果尽快报告每个测试,因为他们完成,不幸的是JUnit的任务只打印了整个测试用例后,测试结果已完成。测试用例(AllTests中)是相当大的,所以我必须要等待相当一段时间的输出。有没有什么办法让&LT;&JUnit的GT;
立即打印个人测试结果
推荐答案
我跟着dkatzel的建议,我自己写的 JUnitResultFormatter
。这里是code我JUnitFormatter:
I followed dkatzel's suggestion to write my own JUnitResultFormatter
. Here is the code for my JUnitFormatter:
package util;
import java.io.OutputStream;
import java.io.PrintStream;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitResultFormatter;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitTest;
public class SimpleTestFormatter implements JUnitResultFormatter {
private PrintStream out = System.out;
@Override
public void addError(Test test, Throwable error) {
logResult(test, "ERR");
out.println(error.getMessage());
}
@Override
public void addFailure(Test test, AssertionFailedError failure) {
logResult(test, "FAIL");
out.println(failure.getMessage());
}
@Override
public void endTest(Test test) {
logResult(test, "PASS");
}
@Override
public void startTest(Test test) { }
@Override
public void endTestSuite(JUnitTest testSuite) throws BuildException { }
@Override
public void setOutput(OutputStream out) {
this.out = new PrintStream(out);
}
@Override
public void setSystemError(String err) {
// don't echo test error output
}
@Override
public void setSystemOutput(String out) {
// don't echo test output
}
@Override
public void startTestSuite(JUnitTest testSuite) throws BuildException { }
private void logResult(Test test, String result) {
out.println("[" + result + "] " + String.valueOf(test));
out.flush();
}
}
这是我如何使用Ant脚本:
And this is how I use it in the Ant script:
<junit fork="yes" printsummary="yes" filtertrace="yes">
<classpath>...</classpath>
<test name="tests.AllTests"/>
<formatter classname="util.SimpleTestFormatter" usefile="false"/>
</junit>
请注意该类必须以的ant.jar
编译和蚂蚁的junit.jar
类路径上。
Note that the class must be compiled with ant.jar
and ant-junit.jar
on the classpath.
这篇关于立即JUnit测试记录以&lt;&JUnit的GT; Ant任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文