![](/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.