我的 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/