单元测试是个好东西, 可以在一定程度上兜底

虽然写单元测试这件事情非常麻烦

但是好的单元测试可以显著提高代码质量, 减少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

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

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

使用coverlet统计单元测试的代码覆盖率的更多相关文章

  1. junit配合catubuter统计单元测试的代码覆盖率

    1.视频参考孔浩老师ant视频笔记 对应的build-junit.xml脚步如下所示: <?xml version="1.0" encoding="UTF-8&qu ...

  2. TestNG配合catubuter统计单元测试的代码覆盖率

    build-testNG.xml对应的ant脚本为 <?xml version="1.0" encoding="UTF-8"?> <proje ...

  3. VS2013单元测试及代码覆盖率分析--Xunit

    1,Javaweb中有jmeter.jacoco.ant.badboy等集成测试代码覆盖率的方式,C#代码的覆盖率怎么测试呢?VS2013的IDE上本身并未集成测试的工具,以下讲解VS2013中C#代 ...

  4. Java开发工具IntelliJ IDEA单元测试和代码覆盖率图解

    原文 http://www.cnblogs.com/xiongmaopanda/p/3314660.html Java开发工具IntelliJ IDEA使用教程:单元测试和代码覆盖率 本文将展示如何使 ...

  5. Jenkins构建Android项目持续集成之单元测试及代码覆盖率

    单元测试 在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视 ...

  6. [Azure Devops] 获取单元测试的代码覆盖率

    1. 获取代码覆盖率 上一篇文章里,我们在 Pipeline 中插入一个单元测试并把所有单元测试都通过作为 Pipeline 通过的硬性要求.除此以外,我们还可以获取单元测试的代码覆盖率,用作衡量代码 ...

  7. 使用JaCoCo统计单元测试代码覆盖率

    1 JaCoCo介绍 JaCoCo是EclEmma团队基于多年覆盖率库使用经验总结而研发的一个开源的Java代码覆盖率库. 2 JaCoCo覆盖率计数器 JaCoCo 包含了多种尺度的覆盖率计数器(C ...

  8. Java实现的词频统计——单元测试

    前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenize ...

  9. 【week3】词频统计 单元测试

    使用Eclipse 集成的Junit进行单元测试.单元测试的核心包括断言.注解. 测试代码如下: @BeforeClass // 针对所有测试,只执行一次,且必须为static void public ...

随机推荐

  1. DHCP原理及配置

    DHCP工作原理 集中的管理.分配IP地址,使client动态的获得IP地址.Gateway地址.DNS服务器地址等信息,并能够提升地址的使用率. 简单来说,DHCP就是一个不需要账号密码登录的.自动 ...

  2. django项目、vue项目部署云服务器

    目录 上线架构图 服务器购买与远程连接 安装git 安装mysql 安装redis(源码安装) 安装python3.8(源码安装) 安装uwsgi 安装虚拟环境 安装nginx(源码安装) vue项目 ...

  3. mysql 跨库事务XA

    前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结. 1.首先要确保mysql开启XA事务支持 SHOW VARIABLES LIKE '%XA%' 如果innodb_s ...

  4. LuoguP2217 [HAOI2007]分割矩阵 (DP + memorized search)

    int n,m,tim; int mp[N][N], sum[N][N]; double ave,dp[N][N][N][N][N]; inline double DP(int a,int b,int ...

  5. Luogu3177 [HAOI2015]树上染色 (树形DP)

    考场上打出来个\(2^n n^2 \log (n)\),还文件错误RE了... 其实这不就是个变了一点点的树形背包,状态是节点\(u\)子树的\(贡献\). //#include <iostre ...

  6. Luogu3243 [HNOI2015]菜肴制作 (拓扑排序)

    题面毒人,其实就是叫你反图跑拓扑 #include <iostream> #include <cstdio> #include <cstring> #include ...

  7. 使用二手 gopro 做行车记录仪

    背景 自打开了博客以后,一直在写技术说明文,今天打算写点程序以外的东西换换味口.前段时间在某鱼上以 300 元的价格入手了一套完整的 gopro3+ 运动摄像头,带一张 32G SD 卡,两块备用电池 ...

  8. ArkUI block 标签

    block 标签在构建时不会被当作真实 DOM,而 block 标签之下的标签都会被渲染到真实 DOM 中.它类似于 Vue 的 template 标签. <div class="co ...

  9. 理解 Flutter 的基础概念:Widget

    Widget 的本意是组件的意思,熟悉 Web 应用开发的人在后期必定会接触到 Vue.React 等框架,这些框架都有一个核心的概念 -- 组件.组件的目的也很简单,那就是重复率用一段代码,并且能够 ...

  10. java中list集合的几种去重方式

    public class ListDistinctExample { public static void main(String[] args) { List<Integer> list ...