如何将JUnit Ant任务配置为仅在失败时产生输出?

我在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任务文档中列出的所有组合,其中包括:

  • printsummary属性
  • showoutput属性
  • formatter元素与每种type
  • 我的用例是从命令行运行ant 。 当我编写更多测试时,我不希望后续测试的输出变得如此之大,以至于失败测试的输出会滚动出屏幕。 我只想让ant保持安静,除非有一个失败的测试需要我的注意。 我如何配置Ant / JUnit来执行此操作?

    我正在使用Ant版本1.6.4和JUnit 4.6。


    一种可能性是使用' classname '属性定义自己的xml格式化器(并且扩展org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter ,可能对endTest()endTestsuite()方法没有任何endTest() )。
    该格式化程序将忽略信息消息并仅显示失败消息。


    注意:这个设置提到了只显示失败测试的可能性:

    <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>
    

    你测试过了吗?

    注意:如最近(2012年2月)票证所示,“ showoutput="true"<formatter type="brief" usefile="false"/> ”可能有点问题,


    另一个方法是定义你的蚂蚁Juint Test runner,支持ant JUnitResultFormatter并只显示stderr消息。

    eclipse中的EclipseTestRunner就是一个很好的例子。

    链接地址: http://www.djcxy.com/p/86081.html

    上一篇: How do I configure JUnit Ant task to only produce output on failures?

    下一篇: Change a method at runtime via a hot swap mechanism