EMP*_*EMP 5 testing msbuild nunit
我有一个MSBuild脚本,使用控制台运行程序运行NUnit单元测试.有多个测试项目,如果可能的话,我想将它们作为单独的MSBuild目标.如果测试失败,我希望整体构建失败.但是,我想继续运行所有测试,即使其中一些测试失败.
如果我设置,ContinueOnError="true"那么无论测试结果如何,构建都会成功.如果我将其保留为false,则构建在第一个失败的测试项目之后停止.
一种方法是设置ContinueOnError="true"NUnit任务,但从NUnit进程中获取退出代码.如果退出代码永远!= 0,则创建一个新属性,稍后可以在脚本中使用该属性以使构建失败.
例:
<Project DefaultTargets="Test"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<UnitTests Include="test1">
<Error>true</Error>
</UnitTests>
<UnitTests Include="test2">
<Error>false</Error>
</UnitTests>
<UnitTests Include="test3">
<Error>true</Error>
</UnitTests>
<UnitTests Include="test4">
<Error>false</Error>
</UnitTests>
<UnitTests Include="test5">
<Error>false</Error>
</UnitTests>
</ItemGroup>
<Target Name="Test" DependsOnTargets="RunTests">
<!--Fail the build. This runs after the RunTests target has completed-->
<!--If condition passes it will out put the test assemblies that failed-->
<Error Condition="$(FailBuild) == 'True'"
Text="Tests that failed: @(FailedTests) "/>
</Target>
<Target Name="RunTests" Inputs="@(UnitTests)" Outputs="%(UnitTests.identity)">
<!--Call NUnit here-->
<Exec Command="if %(UnitTests.Error) == true exit 1" ContinueOnError="true">
<!--Grab the exit code of the NUnit process-->
<Output TaskParameter="exitcode" PropertyName="ExitCode" />
</Exec>
<!--Just a test message-->
<Message Text="%(UnitTests.identity)'s exit code: $(ExitCode)"/>
<PropertyGroup>
<!--Create the FailedBuild property if ExitCode != 0 and set it to True-->
<!--This will be used later on to fail the build-->
<FailBuild Condition="$(ExitCode) != 0">True</FailBuild>
</PropertyGroup>
<ItemGroup>
<!--Keep a running list of the test assemblies that have failed-->
<FailedTests Condition="$(ExitCode) != 0"
Include="%(UnitTests.identity)" />
</ItemGroup>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |