.NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )
.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 文件了.
打开这个文件大概长这个样.

大概率这不是人看的东西.
然后另一个工具又出来了.
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就能看到对应的测试报告了.


全文完.
明年见!
.NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )的更多相关文章
- .net core 单元测试之 JustMock第一篇
前面介绍了单元测试的框架NUnit,它可以很好的帮助我们建立测试,检验我们的代码是否正确.但这还不够,有时候我们的业务比较重,会依赖其它的类.基于隔离测试的原则,我们不希望依赖的其它类影响到我们的测试 ...
- .net core 单元测试之 JustMock第二篇
JustMock标记方法 上篇文章在举例子的时候使用了returns的标记方法,JustMock还有很多标记方法: CallOriginal 跟Behaviors里的CallOriginal差不多意思 ...
- .NET Core单元测试覆盖率统计coverlet配置和使用
https://segmentfault.com/a/1190000017569492 需要使用: 使用 Moq 测试.NET Core 应用 https://www.cnblogs.com/c ...
- ASP.NET Core搭建多层网站架构【3-xUnit单元测试之简单方法测试】
2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 2.4.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-xUnit单元测试 ...
- ASP.NET Core搭建多层网站架构【12-xUnit单元测试之集成测试】
2020/02/01, ASP.NET Core 3.1, VS2019, xunit 2.4.1, Microsoft.AspNetCore.TestHost 3.1.1 摘要:基于ASP.NET ...
- 玩转单元测试之WireMock -- Web服务模拟器
玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...
- 单元测试之NSNull 检测
本文主要讲 单元测试之NSNull 检测,在现实开发中,我们最烦的往往就是服务端返回的数据中隐藏着NSNull的数据,一般我们的做法是通过[data isKindOfClass:[NSNull cla ...
- [转载]单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...
- 单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...
随机推荐
- BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
Description BZOJ只是扔了个下载链接 Solution 设$f[x][i]$表示$x$点选中$i$个黑点的最小连通块. 设$g[x][i]$表示$x$点选中$i$个黑点的最大连通块. 转 ...
- String 的字面量、常量池、构造函数和intern()函数
一.内存中的 String 对象 Java 的堆和栈 对于基本数据类型变量和对象的引用,也就是局部变量表属于栈内存: 而通过 new 关键字和 constructor 创建的对象存放在堆内存: 直接的 ...
- 基于Azure Blob冷存储的数据压缩算法测试对比分析
背景说明: 近期公司的数据增量迅速增长,存储的成本太高,需要采用生命周期进行管理,热存储中的数据或者被删除,或者备份至冷存储.但是冷备时是否要压缩,需要进行验证.Azure本身没有提供压缩的接口,只能 ...
- 关于CUDA C 项目中“ error C2059: 语法错误:“<” ”问题的解决方法
该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDA C的源文件需要由CUDA的编译器nvcc.exe进行编译. 发生该语法错误的原因是cu文件被C++编译器所编译, ...
- Linux API fork 子进程 创建 & 无名管道通信
#include<unistd.h> #include<stdio.h> int main() { ]; ]; pipe(filedes); printf("my p ...
- Vue packages version conflicts 错误修复
我们在使用Vue作为weex中的前端框架的开发过程中,某次 npm start 遇到了如下的错误: Vue packages version mismatch: - vue@2.5.16 - vue- ...
- linux 学习第十一天
一.配置服务说明 1.1.linux系统中的一切都是文件 1.2.配置一个服务就是在修改去配置文件 1.3.要想让新的配置文件立即生效,需要重启对应的服务 二.配置网卡 2.1.编辑配置文件 vim ...
- Android环境搭建及Ionic打包(win7)
本人刚刚接触Ionic3,初步进行打包操作,将其遇到的问题和整个流程记录下载,方便以后的巩固,也为小白们提供一个参考.因本人没有appleヽ(ー_ー)ノ,而且使用的是WIN7系统,所以暂时只提供了WI ...
- Mysql 查询是否锁表
1.查询是否锁表show OPEN TABLES where In_use > 0; 2.查询进程 show processlist 查询到相对应的进程===然后 kill id 补充:查看正在 ...
- transform动画的一个3D的正方体盒子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...