如果测试失败,如何使Ant junit任务显示详细信息?

时间:2014-05-08 15:10:47

标签: java unit-testing ant junit

My Ant junit任务目前设置为输出最少的信息。在控制台上,对于每个测试类,它会打印类名,运行的测试数,失败和错误,以及每个测试的已用时间。如果测试失败,则会有另外一行说测试失败。

我想在控制台上获得更多细节,但只有在测试失败的情况下才能获得。如果我遵循像this这样的建议,通过添加另一个带有usefile = false的普通格式化程序,那么即使所有测试都通过,我也会获得所有测试的额外冗余细节。这包括打印每个测试方法,以及每个测试类的冗余行。

有可能得到这个吗?

1 个答案:

答案 0 :(得分:0)

我相信我已经实施了合理的解决方案。

解决方案的关键点是: *单元测试完成后执行任务,只有在" 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>

请注意,我也让它&#34;优雅地失败&#34;如果&#34; xmltask.jar&#34;档案不可用。在任务中引用名称空间的能力是Ant 1.9.1及更新版本中的一项新功能。

我在我的&#34; run-unit-test&#34;结束时调用了这个目标。目标