如何为.NET Core XUnit项目在VSTS构建中添加代码覆盖率
嘿,我来一步步教你搞定这个事儿——给基于ASP.NET Core和XUnit的VSTS构建加上代码覆盖率指标,其实流程很清晰,跟着走就行:
1. 给测试项目安装代码覆盖率工具
我们用Coverlet这个轻量工具,它和XUnit完美兼容,还能直接集成到MSBuild里:
- 打开你的XUnit测试项目,通过NuGet包管理器安装
Coverlet.MSBuild包(选最新稳定版就行);或者直接在项目的.csproj文件里添加下面的引用:
(版本号可以换成你安装的最新版)<PackageReference Include="Coverlet.MSBuild" Version="6.0.0" PrivateAssets="all" />
2. 配置VSTS构建里的测试任务
接下来要在VSTS构建管道里调整测试任务的参数,让它在运行测试时收集覆盖率:
- 打开你的VSTS构建管道,找到现有的**.NET Core**测试任务(如果没有就添加一个)
- 把任务的命令设置为
test - 在参数输入框里添加这些配置:
简单解释下这些参数:--configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/CollectCoverage=true:开启覆盖率收集功能CoverletOutputFormat=cobertura:生成VSTS能识别的Cobertura格式报告CoverletOutput:指定报告的输出路径,方便后续任务读取
3. 添加发布覆盖率报告的任务
生成报告后,得让VSTS把数据展示出来,所以要加一个Publish Code Coverage Results任务:
- 在测试任务的后面添加这个任务
- 配置项里:
- Code coverage tool选择
Cobertura - Summary file填写刚才指定的报告路径:
$(Build.SourcesDirectory)/TestResults/Coverage/coverage.cobertura.xml - 如果你想设置覆盖率门槛(比如低于80%就构建失败),可以勾选Fail build if coverage is below threshold,然后在下面设置具体的阈值
- Code coverage tool选择
4. 验证效果
保存管道配置后,手动触发一次构建,等构建完成:
- 进入构建结果页面,找到Code Coverage标签页,就能看到详细的覆盖率数据了——包括整体覆盖率、各个项目、类甚至方法的覆盖情况,一目了然
小提示
- 如果你的解决方案有多个测试项目,每个都需要安装
Coverlet.MSBuild包 - 确保测试任务的工作目录是解决方案根目录,不然可能会出现报告找不到的问题
- 要是遇到路径相关的问题,可以在测试任务后加一个Publish Build Artifacts任务,把
TestResults文件夹发布成构建构件,方便排查问题
内容的提问来源于stack exchange,提问作者Boris Lipschitz
相关产品推荐
相关产品推荐

