自动构建 - 如果NUnit测试失败,则停止构建

时间:2011-05-27 16:13:21

标签: batch-file nunit build-automation automated-tests

我有一个简单的批处理文件,它调用MSBuild来构建我的Visual Studio解决方案,然后运行解决方案的NUnit测试,然后使用Wix创建一个MSI。但是,如果任何单元测试失败,我无法弄清楚如何停止构建过程。

我尝试了以下内容:

nunit-console ../test.nunit
echo %ERRORLEVEL%

但无论单元测试是通过还是失败,%ERRORLEVEL%始终为0.还有另一种方法可以轻松确定是否有任何测试失败?我正在使用NUnit 2.5.9。

2 个答案:

答案 0 :(得分:3)

叫我懒惰,但我只使用MSBuildTasks和他们的NUnit任务。然后,只需设置ContinueOnError属性就可以了。

<NUnit ContinueOnError="true" Assemblies="@(TestAssemblies)" OutputXmlFile="$(TestResultsRoot)\nunit_results.xml" ToolPath="$(TeamBuildDependenciesPath)\NUnit\">
      <Output TaskParameter="ExitCode" PropertyName="NUnitResult" />
</NUnit>

答案 1 :(得分:0)

经过一段时间的搜索后发现问题是在我的开发过程中的某个地方,ERRORLEVEL变量被分配了一个值。因此,当我写echo %ERRORLEVEL%时,它报告的是ERRORLEVEL变量,而不是实际的ERRORLEVEL退出代码。

我通过关闭控制台并重新打开它来解决这个问题。现在,当单元测试失败时,退出代码大于0.如果所有测试都通过,则退出代码等于0.

编辑: 我完全从我的脚本中删除了它。现在,我将nunit-console $(TargetPath)放在我的测试项目的构建后事件中。这样,当我使用MSBuild构建解决方案时,它将自动运行单元测试并在测试失败时报告错误。在Visual Studio中构建时,此方法还会在单元测试失败时将错误添加到错误列表中,这样可以更快地识别新错误。