2009-06-08 33 views
17

我在Ant中配置JUnit,以便在每個版本上運行單元測試。我希望的輸出在運行時無法在Ant控制檯輸出中打印測試。我不需要看到任何成功的測試輸出。如何將JUnit Ant任務配置爲僅在失敗時產生輸出?

這是我build.xml文件的相關位:

<junit> 
    <classpath> 
     <pathelement path="${build}"/> 
    </classpath> 
    <formatter type="brief" usefile="false"/> 
    <batchtest> 
     <fileset dir="${src}" includes="my/tree/junit/"/> 
    </batchtest> 
</junit> 

這將產生我想幾乎什麼,失敗的測試都是在Ant輸出詳細,但隨後的測試還寫了以下的輸出:

 [junit] Testsuite: my.tree.junit.ExampleTest 
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

我相信我已經試過JUnit task文檔中列出的所有組合,包括:

  • printsummary屬性
  • showoutput屬性
  • formatter與各種type

我的用例的元件是運行在命令行ant。當我編寫更多測試時,我不希望後續測試的輸出變得如此之大,以至於失敗測試的輸出會滾動出屏幕。我只想ant安靜,除非有一個失敗的測試需要我的關注。我如何配置Ant/JUnit來執行此操作?

我正在使用Ant版本1.6.4和JUnit 4.6。

+0

剛剛添加了自定義JUnit自定義測試運行器的可能性。 – VonC 2009-06-08 05:55:29

回答

13

一種可能性是用'classname'屬性定義你自己的xml格式化程序(並且擴展org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,可能對endTest() or endTestsuite() methods沒有任何幫助)。
該格式化程序將忽略信息消息並僅顯示故障消息。


注:this settings提到的只是顯示失敗的測試的可能性:

<junit showoutput="true" 
     fork="true" 
     failureproperty="tests.failed" 
     errorproperty="tests.failed"> 
    <batchtest todir="${test.results.dir}"> 
     <fileset dir="test"> 
      <include name="**/*Test.java"/> 
     </fileset> 
    </batchtest> 
    <classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/> 
    <formatter usefile="false" type="brief"/> 
    <!-- <formatter type="xml"/> If missing, only displays failed tests --> 
</junit> 

你測試了嗎?

注:「showoutput="true"<formatter type="brief" usefile="false"/>」可能是有點問題,這個recent (February 2012) ticket


另一個計算策略如圖所示是定義你的螞蟻Juint的測試運行,支持螞蟻JUnitResultFormatter和只顯示stderr消息。

eclipse中的EclipseTestRunner就是一個很好的例子。

+0

非常好的答案! – guerda 2009-06-08 07:40:43