![](/img/trans.png)
[英]JUnit test fails in Ant with `<junit>` task but passes with `<exec>`?
[英]How to make Ant junit task show detail only if a test fails?
我的Ant junit任务当前设置为输出最少的信息。 在控制台上,对于每个测试类,它会打印类名称,运行,失败和错误的测试数量以及每个测试的经过时间。 如果测试失败,则还有另外一行表示测试失败。
我想在控制台上获得更多详细信息,但是仅在测试失败的情况下。 如果我按照建议像这样 ,通过添加具有usefile额外的普通格式化=假,然后我得到了所有测试的额外多余的细节,即使通过了所有测试。 这包括打印执行的每个测试方法,以及每个测试类的冗余行。
有可能得到这个吗?
我相信我已经实施了合理的解决方案。
解决方案的关键点是:*在单元测试完成后执行任务,仅在“ 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和更高版本中的一项新功能。
我将这个目标称为“运行单元测试”目标的结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.