2011-03-31 114 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> 
相关问题