NUnit 扩展包任务在测试失败后停止

NUnit Extension Pack task stop after failed tests

我是 运行 来自扩展包的 msbuild nunit 任务,有 1 个测试失败:

 <Target Name="Tests">
    <MSBuild.ExtensionPack.CodeQuality.NUnit 
      Assemblies="$(DropsDir)$(Configuration)$(TestPrj)$(TestPrj).dll" 
      ToolPath="$(NUnitPath)"
      ContinueOnError="False">
      <Output TaskParameter="Total" PropertyName="ResultTotal"/>
      <Output TaskParameter="NotRun" PropertyName="ResultNotRun"/>
      <Output TaskParameter="Failures" PropertyName="ResultFailures"/>
      <Output TaskParameter="Errors" PropertyName="ResultErrors"/>
      <Output TaskParameter="Inconclusive" PropertyName="ResultInconclusive"/>
      <Output TaskParameter="Ignored" PropertyName="ResultIgnored"/>
      <Output TaskParameter="Skipped" PropertyName="ResultSkipped"/>
      <Output TaskParameter="Invalid" PropertyName="ResultInvalid"/>
    </MSBuild.ExtensionPack.CodeQuality.NUnit>
  </Target>

输出:

如何防止下一个目标被执行? "Zip-Projects" ? 我正在使用 MSBuild.Extension.Pack.March.2015.zip 和框架 4.0

您没有提及您使用的是哪个版本的 MSBuildExtensionPack,但查看 Trunk 的源代码(第 278 行)看起来您需要指定 FailOnFailures 属性 为了让他们的故障检测工作。

因此

 <Target Name="Tests">
    <MSBuild.ExtensionPack.CodeQuality.NUnit 
      Assemblies="$(DropsDir)$(Configuration)$(TestPrj)$(TestPrj).dll" 
      ToolPath="$(NUnitPath)"
      FailOnFailures="True"
      ContinueOnError="False">
      <Output TaskParameter="Total" PropertyName="ResultTotal"/>
      <Output TaskParameter="NotRun" PropertyName="ResultNotRun"/>
      <Output TaskParameter="Failures" PropertyName="ResultFailures"/>
      <Output TaskParameter="Errors" PropertyName="ResultErrors"/>
      <Output TaskParameter="Inconclusive" PropertyName="ResultInconclusive"/>
      <Output TaskParameter="Ignored" PropertyName="ResultIgnored"/>
      <Output TaskParameter="Skipped" PropertyName="ResultSkipped"/>
      <Output TaskParameter="Invalid" PropertyName="ResultInvalid"/>
    </MSBuild.ExtensionPack.CodeQuality.NUnit>
  </Target>

我使用错误任务并读取输出变量 ResultErrors 和 ResultFailures 解决了这个问题。

<Error Condition="$(ResultErrors) > 0 Or $(ResultFailures) > 0" Text="Unit Tests didn't pass *****" />