正如错误消息所示,它需要coverage.cobertura.xml
但没有找到。(没有生成!)
在你的脚本中:
reportgenerator -reports:$(Build.SourcesDirectory)\TestResults\Coverage\coverage.cobertura.xml - ...
The coverage.cobertura.xml
是预期的输入文件,但未生成。根据我的经验,这是因为你dotnet test
任务未成功生成此文件。
我相信你的dotnet test
任务可能会成功,没有任何错误,但是如果我们检查日志,我们会发现它没有生成预期的结果coverage.cobertura.xml
文件。问题原因可以参考这个文件:
VS测试集成
如果你使用dotnet add package coverlet.collector
添加命令coverlet.collector
打包到您的项目中,您应该使用命令dotnet test --collect:"XPlat Code Coverage"
生成一个coverage.cobertura.xml
包含结果的文件。
MSBuild集成
如果你添加coverlet.msbuild
打包到您的项目中使用dotnet add package coverlet.msbuild
。然后,您需要通过以下方式启用代码覆盖率:dotnet test /p:CollectCoverage=true
。运行上述命令后,会出现coverage.json
将生成包含结果的文件。
由于 dotnet test 命令下面的脚本需要coverage.cobertura.xml
文件,你应该使用VS测试集成,这意味着你应该使用命令dotnet test --collect:"XPlat Code Coverage"
代替dotnet test /p:CollectCoverage=true
。这对于生成丢失的文件是有意义的。
Note:
1.在我的测试中,dotnet test
尽管未生成代码覆盖率报告,但任务不会引发任何错误。我们可以随时检查任务日志以获取我们需要的真实信息。
2.另外,检查这个文件你可以找到:
如果您在 Windows 平台上进行构建,代码覆盖率指标可以
通过使用内置的覆盖数据收集器来收集。
and
如果您在 Linux 或 macOS 上构建,则可以使用 Coverlet 或
类似的工具来收集代码覆盖率指标。
因此,根据您的脚本内容,更建议在Linux或macOS代理中运行。如果您只是希望它在 Windows 中运行,它有默认的内置覆盖率数据收集器。
希望以上内容有助于解决您的困惑和原始问题。