gpt4 book ai didi

msbuild - 在 MSBuild 中捕获错误状态

转载 作者:行者123 更新时间:2023-12-02 16:46:44 25 4
gpt4 key购买 nike

作为一些 build automation of running xUnit.net tests with MSBuild 的一部分,我遇到了需要循环处理一批项目的情况。

在循环内,我需要检测迭代是否失败,但是无论如何我都想继续执行。然后,在批处理位之后,我需要知道是否发生了一个或多个错误,以便向 TeamBuild 报告结果。

IOW,伪代码:

Task Name=RunTests
CreateItems
ForEach item CallTarget Target=RunTest ContinueOnError=true
CombineNUnitResults
Report success/failure

Task Name=RunTest
XUnit item

我希望这可以在没有自定义任务的情况下实现(或者像 Jonne 那样破解 xunit.net MSBuild 任务)。 (但愿意使用MSBuild Community或Sdc任务)

@BradWilson:我这是不可能干净地完成的,我将寻找 Jonne 对 NUnit 任务的更改,以使其也进入 xunit 任务

另请参阅:How do I get Team Build to show test results and coverage for xUnit.net test suite?

最佳答案

这就是我们所做的:

<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)' != ''"/>

无论是否失败,这都将运行所有单元测试,但如果出现任何故障,则在所有单元测试运行后都会失败。注意 ContinueOnError="true" 确保它们全部运行,最后的错误检查是否有任何一个失败(在 nunit 0 中表示成功,其他都表示失败)。

注意:这是使用 MSBuildCommunityTasks NUnit 任务,但如果您只是将 exec 与 nunit exe 一起使用,则可以获得相同的效果。输出“ExitCode”对于从 ToolTask​​ 继承的任何 Task 都是通用的。

关于msbuild - 在 MSBuild 中捕获错误状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com