Rub*_*ink 3 msbuild xunit.net team-build exit-code
作为使用MSBuild运行xUnit.net测试的一些构建自动化的一部分,我遇到了需要循环遍历一批项目的情况.
在循环内部,我需要检测迭代是否失败,但我想继续执行,无论如何.然后在批处理后,我需要知道是否发生了一个或多个错误,以便向TeamBuild报告结果.
IOW,伪代码:
Task Name=RunTests
CreateItems
ForEach item CallTarget Target=RunTest ContinueOnError=true
CombineNUnitResults
Report success/failure
Task Name=RunTest
XUnit item
Run Code Online (Sandbox Code Playgroud)
我希望这可以在没有自定义任务的情况下实现(或者像Jonne那样攻击xunit.net MSBuild任务).(但愿意使用MSBuild社区或Sdc任务)
和@BradWilson:我不可能干净利落地做,我会在NUnit任务中找到Jonne的变化,也可以让它进入xunit任务
这就是我们的工作:
<NUnit Assemblies="@(TestAssemblies)"
ToolPath="$(NUnitPath)"
WorkingDirectory="%(TestAssemblies.RootDir)%(TestAssemblies.Directory)"
OutputXmlFile="@(TestAssemblies->'%(FullPath).$(NUnitFile)')"
Condition="'@(TestAssemblies)' != ''"
ExcludeCategory="$(ExcludeNUnitCategories)"
ContinueOnError="true">
<Output TaskParameter="ExitCode" ItemName="NUnitExitCodes"/>
</NUnit>
<Error Text="Test error(s) occured" Code="%(NUnitExitCodes.Identity)" Condition=" '%(NUnitExitCodes.Identity)' != '0' And '@(TestAssemblies)' != ''"/>
Run Code Online (Sandbox Code Playgroud)
这将运行所有单元测试,无论出现何种故障,但如果出现任何故障,将在所有单元测试运行后失败.注意ContinueOnError="true"确保它们全部运行并且最后的错误检查它们是否有任何失败(在nunit 0中表示成功,其他任何事情都是失败).
注意:这是使用MSBuildCommunityTasks NUnit任务,但如果您只是将exec与nunit exe一起使用,则可以获得相同的效果.输出"ExitCode"对于从ToolTask继承的任何Task都是通用的.
| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |