使用coverlet统计单元测试的代码覆盖率
单元测试是个好东西, 可以在一定程度上兜底
虽然写单元测试这件事情非常麻烦
但是好的单元测试可以显著提高代码质量, 减少bug, 避免无意中的修改导致其他模块出错
写测试用例的过程中, 靠人力去确保所有代码都被覆盖是一件挺麻烦的事情
本文主要介绍如何在xunit下使用coverlet统计测试覆盖率
环境介绍
系统: wsl2
编辑器: vscode
插件: C# + Coverlet + Coverage Gutters
代码
TestFunc.cs
public class TestFunc
{
    public static string Test1()
    {
        return "Test1";
    }
    public static string Test2()
    {
        return "Test2";
    }
}
测试代码:
[Fact]
public void Test1()
{
    Assert.True(TestFunc.Test1()=="Test1");
    Assert.False(TestFunc.Test1()=="Test2");
}
通过 dotnet test 运行后

只会显示多少通过, 多少失败, 并不知道哪些代码被覆盖到了
显示覆盖率
修改csproj
首先需要修改单元测试项目的 csproj 文件
在开头的 PropertyGroup 块中添加
<CollectCoverage>true</CollectCoverage>
<CoverletOutputFormat>cobertura</CoverletOutputFormat>
用于生成测试的覆盖报告 coverage.cobertura.xml
之后在 ItemGroup 中添加
<PackageReference Include="coverlet.msbuild" Version="3.1.0"/>
之后运行 dotnet test 测试

就会多显示一些覆盖率的内容
查看具体的覆盖情况
安装 Coverlet 和 Coverage Gutters 插件之后
进入被调用的文件内, 在vscode下方状态栏中会显示当前文件的覆盖率情况

上图为初始状态
点击这个 Watch 之后会开始解析 coverage.cobertura.xml

之后会显示当前文件覆盖率

同时编辑器窗口中也会通过比较显眼的绿色(覆盖)红色(未覆盖)标记覆盖情况
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号