.NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )

news/2025/6/19 18:07:10

.NET Core单元测试之搞死开发的覆盖率统计

这两天在给项目补单元测试,dalao们要求要看一下测试覆盖率

翻了一波官方test命令覆盖率倒是有支持了,然而某个更新日志里面写着

【“Support for Linux and Mac will be considered separately in a subsequent effort.”】

吐血ing。。。

8102年都要过去了,微软同学你是不有点过分啊。

然后又翻了一堆资料之后发现,GitHub有dalao自己搞了个coverlet来支持测试覆盖率。

开源大法拯救世界啊!!!

star一个再说。

coverlet配置和使用

首先安装一下coverlet.


dotnet tool install --global coverlet.console

或者和我一样懒的话,直接在项目里面引用 "coverlet.msbuild" 这个包也行.

    <PackageReference Include="coverlet.msbuild" Version="2.5.0" />

引用之后,执行dotnet test 的时候加多三个参数

dotnet test /p:CollectCoverage=true /p:CoverletOutput='./results/' /p:CoverletOutputFormat=opencover
  • CollectCoverage 收集覆盖率
  • CoverletOutput 测试报告数据输出路径
  • CoverletOutputFormat 测试报告格式,支持这些格式json (default)/lcov/opencover/cobertura/teamcity

其他参数自己看一下文档说明就好.

执行之后大概会看到这些信息.

测试报告

PS:可怜的个位数覆盖率....

这个时候Test项目里面的results 文件夹里面就有一个coverage.opencover.xml 文件了.

打开这个文件大概长这个样.

xml

大概率这不是人看的东西.

然后另一个工具又出来了.

ReportGenerator

https://github.com/danielpalme/ReportGenerator

  • ReportGenerator converts XML reports generated by OpenCover, PartCover, dotCover, Visual Studio, NCover, Cobertura or JaCoCo into human readable reports in various formats.

这个工具可以讲上面这些不是人看的XML转换成HTML输出.

美滋滋啊美滋滋啊.

他们居然还有一个配置指导的页面ReportGenerator/usage

真良心!!!

我这边简单起见,直接安装 dotnet tool 全局工具算了.

dotnet tool install --global dotnet-reportgenerator-globaltool

安装好了之后,直接在命令行里面使用 reportgenerator 生成对应的测试报告即可.我这边的命令大概是:

reportgenerator '-reports:UnitTests/results/*.xml' '-targetdir:UnitTests/results'

打开UnitTests/results 下面的index.htm就能看到对应的测试报告了.

1

全文完.

明年见!


https://dhexx.cn/news/show-3019385.html

相关文章

JSP读取MySql数据库实现分页效果

下面是用MV模式做的一个简单的登录后实现分页显示数据信息的页面&#xff0c;后面会用MVC模式改写。 package com.ly.model; import java.sql.*;import java.util.ArrayList; public class UserbeanCl { private Statement st null; private ResultSet rs null; private Conn…

【PDF下载】大数据峰会之MaxCompute大数据语言的新发展

点击查看全文 讲师介绍 振禹 20年业界经验&#xff0c;在数据与分布式系统的应用与开发方面有丰富的经验。目前负责MaxCompute SQL大数据语言的设计与开发&#xff0c;致力于提高MaxCompute的用户体验。 直播简介 议题简介&#xff1a;MaxCompute是全新一代的ODPS&am…

全面移植到C++环境 初试MFC界面设计

作者&#xff1a;finallyliuyu 出处 博客园 此文不适于MFC初学者&#xff0c;尤其适合对MFC有一定基础和了解&#xff0c;面临开发环境从VC6迁移到VC2008的小菜鸟们。 做个界面&#xff0c;主要是Demo作用,因此不管多丑陋&#xff0c;只要比控制台直观就好。 界面格式如下&…

SysCtlDelay 实现延时

SysCtlDelay 实际上由 3 条汇编指令实现&#xff0c;一次可以延时 3 个 clock. 例如&#xff0c;初始化系统时钟&#xff1a; SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC), 16000000); 那么&#xff0c;可以实现毫秒延时函数为&#xff1a; vo…

绑定两个控件的属性

转自CSDNhttp://msdn.microsoft.com/zh-cn/library/ms742167(vvs.90).aspx <Window x:Class"WpfApplication2.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xam…

[CF294B]Shaass and Bookshelf

问题描述 Shaass拥有n本书。他想为他的所有书制作一个书架&#xff0c;并想让书架的长宽尽量小。第i本书的厚度是t[i]&#xff0c;且这本书的纸张宽度是w[i]。书的厚度是1或2&#xff0c;所有书都有同样的高度&#xff08;即书架的高是均匀的&#xff09;。 Shaass以以下的方式…

[coreData]Transformable 格式的attribute ,及自定义格式的attribute

转载说明&#xff08;谢谢&#xff09;http://blog.csdn.net/a21064346/article/details/8082428 点击打开链接 今天很累&#xff0c;找了一天的coredata对不同数据类型的 attribute的处理&#xff0c;但是还是没有找到一个合理的解决方案。 下面就来和大家分享一下今天的收获。…

话说两种oracle锁类型 TX与TM

在oracle 里面&#xff0c;并不存在真正意义上的属于某个对象或者数据的锁&#xff0c;不会对某个表加锁或某几行加锁&#xff0c;oracle中的锁是以数据块的属性存在的,是物理的&#xff0c;并不是逻辑上的属于某个表或某一行的&#xff0c;也就是说&#xff0c;每个数据块本身…

【PDF下载】大数据峰会之MaxCompute 2.0 性能优化揭秘

点击查看全文 讲师介绍 伟林 阿里巴巴大数据事业部资深架构师&#xff0c;原微软Cosmos/Scope核心开发人员&#xff0c; 现负责阿里巴巴大数据计算平台总体架构&#xff0c;该平台是阿里巴巴核心计算分析平台&#xff0c;承担阿里内部绝大数计算任务。林伟作为一名分布式系…

Day13 - Ruby比一比: instance_eval 和 class_eval方法

第13天&#xff01;昨天谈到了class variable&#xff0c;class instance variable和instance variable&#xff0c;也发现在实务上&#xff0c;类别实体变数和实体变数才是主流。今天我们要多谈两个跟前一篇的变数有关的方法&#xff1a;instance_eval和class_eval。让每天都主…