我在Ant中配置JUnit,以便在每个构建上运行单元测试。我希望失败测试的输出在运行时打印在Ant控制台输出中。我不需要看到后续测试的任何输出。
以下是我的build.xml
文件的相关位:
<junit>
<classpath>
<pathelement path="${build}"/>
</classpath>
<formatter type="brief" usefile="false"/>
<batchtest>
<fileset dir="${src}" includes="my/tree/junit/"/>
</batchtest>
</junit>
这几乎产生了我想要的东西,在Ant输出中详细说明了失败的测试,除了成功的测试也写出以下输出:
[junit] Testsuite: my.tree.junit.ExampleTest [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec
我相信我已经尝试了JUnit task文档中列出的所有组合,包括:
printsummary
属性showoutput
属性formatter
的type
元素
我的用例是从命令行运行ant
。当我编写更多测试时,我不希望后续测试的输出如此之大,以至于失败测试的输出会滚出屏幕。我只是希望ant
保持安静,除非有一个需要我注意的失败测试。如何配置Ant / JUnit来执行此操作?
我正在使用Ant版本1.6.4和JUnit 4.6。
答案 0 :(得分:13)
一种可能性是使用“classname
”属性定义您自己的xml格式化程序(并扩展org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
,可能在endTest()
or endTestsuite()
methods上无效)。
该格式化程序将忽略信息消息并仅显示失败消息。
注意:this settings提到仅显示失败测试的可能性:
<junit showoutput="true"
fork="true"
failureproperty="tests.failed"
errorproperty="tests.failed">
<batchtest todir="${test.results.dir}">
<fileset dir="test">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
<classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/>
<formatter usefile="false" type="brief"/>
<!-- <formatter type="xml"/> If missing, only displays failed tests -->
</junit>
你测试过吗?
注意:“showoutput="true"
和<formatter type="brief" usefile="false"/>
”可能会有点问题,如recent (February 2012) ticket}
另一个方法是定义你的ant Juint Test跑步者,支持ant JUnitResultFormatter
并只显示stderr消息。
来自日食的EclipseTestRunner
就是一个很好的例子。