C# MSTest项目如何使用coverlet.collector统计测试工具类代码覆盖率
问题原因
coverlet 默认开启了测试程序集排除规则,只会统计业务项目(即你的项目A)的代码覆盖率,存放在UnitTests测试项目内的UnitTestUtils.cs属于测试项目代码,默认不会被纳入统计范围。
解决方案
方法1:修改测试项目配置(推荐,一次性生效)
打开UnitTests项目的.csproj文件,在<PropertyGroup>节点中添加如下配置:
<PropertyGroup> <!-- 关闭默认排除测试程序集的规则 --> <CoverletExcludeTestAssembly>false</CoverletExcludeTestAssembly> <!-- 指定仅统计UnitTests程序集内的代码,不需要统计项目A可去掉[A]*的配置 --> <CoverletInclude>[UnitTests]*</CoverletInclude> <!-- 排除测试用例文件,仅保留工具类代码统计 --> <CoverletExclude>[UnitTests]UnitTests.Tests.*,[UnitTests]UnitTests.UtilsTests.*</CoverletExclude> </PropertyGroup>
配置完成后直接执行原命令即可:dotnet test --filter Utils
方法2:命令行传参(临时生效,无需修改配置文件)
直接在运行测试的命令中追加配置参数:dotnet test --filter Utils /p:CoverletExcludeTestAssembly=false /p:CoverletInclude="[UnitTests]*" /p:CoverletExclude="[UnitTests]UnitTests.Tests.*,[UnitTests]UnitTests.UtilsTests.*"
优化建议
如果你的单元测试工具方法需要在多个测试项目中复用,建议将UnitTestUtils.cs单独拆分为独立的类库项目,该项目不属于测试项目类型,coverlet会默认统计其覆盖率,无需额外修改排除规则。
内容的提问来源于stack exchange,提问作者elo
相关产品推荐
相关产品推荐

