如何将 JUnit Ant 任务配置为仅在发生故障时生成输出?

2022-09-02 13:51:30

我正在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/JUnit 来执行此操作?antant

我使用的是 Ant 版本 1.6.4 和 JUnit 4.6。


答案 1

一种可能性是使用''属性定义自己的xml格式化程序(并扩展,可能在endTest()endTestsuite()方法上不做任何事情)。
该格式化程序将忽略信息消息,仅显示失败消息。classnameorg.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter


注意:此设置提到仅显示失败测试的可能性:

<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“/>”可能有点问题,正如最近(2012年2月)的这张票所示


另一个合适的方法是定义你的蚂蚁Juint测试运行程序,支持蚂蚁JUnitResultFormatter并仅显示stderr消息。

EclipseTestRunner就是一个很好的例子。


答案 2

推荐