Azure DevOps 构建管道中的 ASP.NET 核心 Web 应用程序控制器需要 100% 的代码覆盖率
Require 100% code coverage for ASP.NET Core web application controllers in Azure DevOps build pipeline
在我们的项目中,我们要求所有控制器方法都应该至少进行一次测试。
如果我们的测试失败,我们的构建就会失败,但现在我们正在使用本指南手动检查代码覆盖率:
基本上这意味着运行宁两个命令:
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput="Path\To\TestProject\TestResults\coverage.cobertura.xml"
reportgenerator "-reports:Path\To\TestProject\TestResults\coverage.cobertura.xml" "-targetdir:coveragereport" -reporttypes:Html
注意:如果你 运行 dotnet test --collect:"XPlat Code Coverage"
你可以获得一个 coverage.cobertura.xml
文件但是如果你使用 msbuild 和 /p:CollectCoverage=true
你将必须添加包 dotnet add package coverlet.msbuild
到测试项目一次。
https://github.com/coverlet-coverage/coverlet/issues/201
然后我们得到这样的报告:
在这种情况下,我们的线路覆盖率不是很好,但我们的控制器具有 100% 的线路覆盖率。检查像 Project.Web.Controllers
这样的特定命名空间是否具有 100% 的行覆盖率是可以的。
我们不能使用正常的代码覆盖率结果来使构建失败,因为我们只想在未测试控制器的情况下使构建失败。
https://gunnarpeipman.com/azure-devops-check-code-coverage/
有什么方法可以很好地做到这一点,或者我们是否需要阅读 coverage.cobertura.xml
文件并查看 <class name="Project.Web.Controllers
例如?
找到命令了!
密钥正在使用 /p:Include="[*]Project.Web.Controllers.*" /p:Threshold=100 /p:ThresholdType=line
完成命令:
dotnet test /p:CollectCoverage=true /p:Include="[*]Project.Web.Controllers.*" /p:Threshold=100 /p:ThresholdType=line
https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/MSBuildIntegration.md
通过:
失败:
在我们的项目中,我们要求所有控制器方法都应该至少进行一次测试。
如果我们的测试失败,我们的构建就会失败,但现在我们正在使用本指南手动检查代码覆盖率:
基本上这意味着运行宁两个命令:
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput="Path\To\TestProject\TestResults\coverage.cobertura.xml"
reportgenerator "-reports:Path\To\TestProject\TestResults\coverage.cobertura.xml" "-targetdir:coveragereport" -reporttypes:Html
注意:如果你 运行 dotnet test --collect:"XPlat Code Coverage"
你可以获得一个 coverage.cobertura.xml
文件但是如果你使用 msbuild 和 /p:CollectCoverage=true
你将必须添加包 dotnet add package coverlet.msbuild
到测试项目一次。
https://github.com/coverlet-coverage/coverlet/issues/201
然后我们得到这样的报告:
在这种情况下,我们的线路覆盖率不是很好,但我们的控制器具有 100% 的线路覆盖率。检查像 Project.Web.Controllers
这样的特定命名空间是否具有 100% 的行覆盖率是可以的。
我们不能使用正常的代码覆盖率结果来使构建失败,因为我们只想在未测试控制器的情况下使构建失败。
https://gunnarpeipman.com/azure-devops-check-code-coverage/
有什么方法可以很好地做到这一点,或者我们是否需要阅读 coverage.cobertura.xml
文件并查看 <class name="Project.Web.Controllers
例如?
找到命令了!
密钥正在使用 /p:Include="[*]Project.Web.Controllers.*" /p:Threshold=100 /p:ThresholdType=line
完成命令:
dotnet test /p:CollectCoverage=true /p:Include="[*]Project.Web.Controllers.*" /p:Threshold=100 /p:ThresholdType=line
https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/MSBuildIntegration.md
通过:
失败: