java - 如何使 Ant junit 任务仅在测试失败时显示详细信息?

标签 java unit-testing ant junit

我的 Ant junit 任务当前设置为输出最少的信息。在控制台上,对于每个测试类,它会打印类名称、运行、失败和出错的测试数量,以及每个测试所用的时间。如果测试失败,则会附加一行表示测试失败。

我想在控制台上获得更多详细信息,但仅限于测试失败时。如果我遵循 this 这样的建议,通过添加一个带有 usefile=false 的附加普通格式化程序,即使所有测试都通过,我也会获得所有测试的附加冗余细节。这包括打印执行的每个测试方法,以及每个测试类的冗余行。

可以得到这个吗?

最佳答案

我相信我已经实现了一个合理的解决方案。

解决方案的要点是: * 单元测试完成后执行任务,仅在“test.failed”时运行 * 使用“xmltask”任务库解析测试结果文件并输出简洁的结果

我编写了以下目标来执行此操作:

<target name="show-unit-test-failures" if="test.failed">
    <taskdef if:set="xmltask.present" name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
    <echo if:set="xmltask.present" message="Unit test failure report details:"/>
    <xmltask if:set="xmltask.present">
        <fileset dir="gen/reports/artifacts/junit">
            <include name="TEST-*Test.xml"/>
        </fileset>
        <call path="//testcase[./error]">
            <parThatam name="className" path="@classname"/>
            <param name="methodName" path="@name"/>
            <param name="errorText" path="./error/text()"/>
            <actions>
                <echo>---------------------------------</echo>
                <echo>@{className}.@{methodName}:</echo>
                <echo>@{errorText}</echo>
            </actions>
        </call>
        <call path="//testcase[./failure]">
            <param name="className" path="@classname"/>
            <param name="methodName" path="@name"/>
            <param name="errorText" path="./failure/text()"/>
            <actions>
                <echo>---------------------------------</echo>
                <echo>@{className}.@{methodName}:</echo>
                <echo>@{errorText}</echo>
            </actions>
        </call>
    </xmltask>
</target>

请注意,如果“xmltask.jar”文件不可用,我也会让它“优雅地失败”。在任务中引用命名空间的能力是 Ant 1.9.1 及更高版本中的一项新功能。

我在“run-unit-test”目标末尾调用此目标。

关于java - 如何使 Ant junit 任务仅在测试失败时显示详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545705/

相关文章:

ant - 如何在 IntelliJ 中编译 apache PIG?

java - 如何在没有某些字段的情况下从 couchdb 获取文档?尽可能使用 Ektorp

Java 8 使用 throws 函数代替 try catch

angularjs - 单元测试 AngularJS 指令时,urlIsSameOrigin 函数失败

tomcat - 使用命令文件复制更改的文件

java - 使用ant编译时Aspectj不工作

java - 登录不工作?未生成 JSON

java - 将可运行的 Java 类导出到 .jar 文件,仅包括必需的依赖项

java - 使用内部有模拟的模拟进行单元测试

c# - 如何在模拟中返回元组?