2011-03-31 46 views
2

我希望我的單元測試能夠運行,無論發生什麼故障。我想知道有多少人不僅僅是第一個失敗,所以我沒有通過構建,失敗,修復和再次構建循環。此外,其他團隊有責任修復一些測試,所以我想知道我們是否可以。運行所有的單元測試,即使一些失敗!

所以在Nant中,我在單元測試的目標中添加了以下內容,因爲failonerror爲false,它將運行所有測試,但不會使構建失敗。

<nunit2 failonerror="false" haltonfailure="false"> 
    <test appconfig="tests.config"> 
     <assemblies basedir="${test.dir}"> 
      <include name="SomeTests.dll" /> 
     </assemblies> 
    </test> 
</nunit2> 

在運行結束,南特報告

1 non-fatal error(s), 0 warning(s) 

我要檢查的非致命錯誤數,如果大於0,我想要做這樣的事情.. 。

<fail message="Failures reported in unit tests." 
     unless="report.errors == 0" /> 

除了我不知道如何得到錯誤計數......有誰知道如何?

+0

我不知道惡性所有,但會發生什麼,當您將failonerror設置爲true並且僅將haltonfailure設置爲false時? – 2011-03-31 12:27:05

+0

第一個單元測試失敗後構建失敗.... :( – Gaz 2011-03-31 12:55:40

+0

我建議將您的測試中的「其他團隊」測試分離到CI服務器上,可以使用單獨的測試程序集,NUnit類別等。測試,如果您在簽入之前在本地運行單元測試,您可以避免破壞構建,您需要快速測試和快速失敗/修復週期。 – TrueWill 2011-04-01 18:19:57

回答

3

除了事實,有利於<exec>下降<nunit2>可能a good idea anyway,在你的特殊情況下,<exec>任務就可以解決問題:

<exec 
    program="C:\dev\tools\NUnit\2.5.9\bin\net-2.0\nunit-console.exe" 
    resultproperty="exec.nunit.result" 
    failonerror="false"> 
    <arg file="C:\foo\bar.dll" /> 
</exec> 
<if test="${int::parse(exec.nunit.result) != 0}"> 
    <!-- fail, print number of failures etc. --> 
</if> 
相關問題