.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就能看到对应的测试报告了.

全文完.

明年见!

原文地址:https://www.cnblogs.com/liguobao/p/10199085.html

时间: 2024-07-30 12:47:20

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

ASP.NET Core搭建多层网站架构【3-使用xUnit编写单元测试之简单方法测试】

2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-使用xUnit编写单元测试之简单方法测试] 文章目录 此分支项目代码 上一章节已经建立了Common公共类库,本章节介绍编写简单的单元测试,对上一章节的公共类库中EnumExtension方法编写单元测试,同时也是介绍上一章节中公共类库EnumExtension的使用方法 新建测试项目 在tests解决方案文件夹下,新建xUni

ASP.NET Core搭建多层网站架构【10-xUnit单元测试之集成测试】

2020/01/31, ASP.NET Core 3.1, VS2019, 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[10-xUnit单元测试之集成测试] 文章目录 此分支项目代码 本章节介绍了 原文地址:https://www.cnblogs.com/kasnti/p/12246180.html

谈谈单元测试之(三):测试工具 JUnit 4

前言 上一篇文章<测试工具 JUnit 3>简单的讨论了 JUnit 3 的使用以及内部的方法.这篇文章将会在 JUnit 3 的基础上,讨论一下 JUnit 4 的新特性.同时,与 JUnit 3 做一个简单的对比.那么,废话就不多说了,直接进入正题. 介绍 JUnit 4.x 是利用了 Java 5 的特性(Annotation)的优势,使得测试比起 3.x 版本更加的方便简单,JUnit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个框架的包结构已经彻底改变,但 4.x 版本仍然

单元测试之NSNull 检测

Unit Testing: 单元测试 测试这个词很容易理解,那么什么是单元(Unit)呢?一个单元指的就是应用程序中可以测试的最小单元.一组源代码可以测试,一般要求有明确的输入与输出.因此一般来说源代码中明确的包含输入输出的每一个方法被认为一个测试的单元(一个case).注意,这里的输出并不局限于方法的返回值对输入参数的改变,也包括方法在执行过程中改变的任何数据. 单元测试在程序里面可以理解一个模块一个方法,在每个可能存在的模块都进行测试,确保每个模块都没有问题,从而提高整体程序的质量. 单元测

雷军:搅和不是要把大家搞死(用互联网的方式和实体经济结合的方法,希望帮助100个行业进步)

<中国经济周刊>记者 韩文 | 天津报道 (本文刊发于<中国经济周刊>2016年第27期) “大家都知道小米是一家手机制造商,可是有多少人知道小米已经是中国第三大电商?又有多少人知道小米的下一个目标可能是世界范围内效率极高的零售连锁店集团?”6月27日,在天津夏季达沃斯“对话联席主席:打造全球品牌”对话会上,小米董事长雷军对与会者说.在雷军看来,小米公司“商业模式极其复杂”,外界对小米公司争议颇多,但并不了解小米. “做科技界的无印良品” 作为一家互联网直销企业,小米今年初开始布局

我的单元测试之总结

单元测试 版权声明:本文为博主原创文章,未经博主允许不得转载. 以下关于单元测试的总结,是基于目前工作的内容进行的汇总,包括了单元测试的定义,单元测试assertion语句,单元测试的框架以及实践中的注意事项等.其中[***]为解释说明.在此推荐几本有关单元测试的书籍供参考.<单元测试的艺术><单元测试之道junit(Java版)><单元测试之道Nunit(C#版)>. Overview 一个UT当中,包括了准备数据,释放资源,执行要验证的那段逻辑代码,以及结果的验证等

单元测试之Mock

为什么需要Mock. 真实对象具有不确定的行为.所以会产生不可预测的结果. 真实对象很难被创建. 真实对象的某些行为很难被触发(如网络错误). 真实对象令程序的运行速度很慢. 真实对象有(或者是)用户界面. 测试需要询问真实对象它是如何被调用的. 真实对象实际上并不存在.例如其它小组开发的模块. 使用Mock的3个步骤 使用一个接口来描述该对象. 为产品代码实现该接口. 以测试为目的,在Mock对象中实现该接口. Test Double Dummy.被传递但是从不被实际使用的对象.通常用于填充参

玩转单元测试之WireMock -- Web服务模拟器

玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 Web 服务以方便测试. 它支持 HTTP 响应存根.请求验证.代理/拦截.记录和回放, 并且可以在单元测试下使用或者部署到测试环境. 它可以用在哪些场景下: 测试移动应用依赖于第三方REST APIs 创建快速原型的APIs 注入否则难于模拟第三方服务中的错误 任何单元测试的代码依赖于web服务的 目

单元测试之道(使用NUnit)

首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上的按钮,顿时你刚刚的轻松感烟消云散:系统无法正常工作,你想读的数据显示不出来,你想存的东西也送不到数据库……于是,你再次回 到IDE里,设断点.调试.一层一层跟踪,当你精疲力尽终于将数据送到数据库里,你又发现了其它问题,于是你继续设断点.调试.编译.调试…… 2.你狂躁地敲击着键盘和鼠标,咒骂着不断