PowerShell遍历执行dotnet test时如何累加所有返回码并返回
PowerShell测试脚本修改方案
修改后完整脚本
$exitCode = 0 Get-ChildItem -Path . -Recurse -Include *.Tests.csproj | ForEach-Object { dotnet test $PSItem.FullName $exitCode += $LASTEXITCODE } exit $exitCode
核心逻辑说明
- 初始化总退出码变量
$exitCode为0,用于累加所有测试命令的返回值 - 遍历每个测试项目执行
dotnet test命令,每次执行完成后读取PowerShell内置变量$LASTEXITCODE获取本次命令的返回码,累加到总退出码中 - 所有测试项目全部执行完成后,通过
exit命令显式返回累加后的总退出码,供CI系统识别执行状态:只要存在任意测试项目执行失败,总退出码必然为非零值 - 执行过程不会因为单个项目测试失败中断,保证所有测试项目都能运行完成
原脚本无法返回非零值的原因:PowerShell管道内执行的外部命令,其非零退出码不会自动透传到脚本层级,遍历结束后脚本默认返回最后一条执行状态为成功的命令的返回值0,无法反映中间步骤的失败情况。
内容的提问来源于stack exchange,提问作者Rick de Water
相关产品推荐
相关产品推荐

