.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 )的更多相关文章

  1. .net core 单元测试之 JustMock第一篇

    前面介绍了单元测试的框架NUnit,它可以很好的帮助我们建立测试,检验我们的代码是否正确.但这还不够,有时候我们的业务比较重,会依赖其它的类.基于隔离测试的原则,我们不希望依赖的其它类影响到我们的测试 ...

  2. .net core 单元测试之 JustMock第二篇

    JustMock标记方法 上篇文章在举例子的时候使用了returns的标记方法,JustMock还有很多标记方法: CallOriginal 跟Behaviors里的CallOriginal差不多意思 ...

  3. .NET Core单元测试覆盖率统计coverlet配置和使用

    https://segmentfault.com/a/1190000017569492 需要使用: 使用 Moq 测试.NET Core 应用    https://www.cnblogs.com/c ...

  4. 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单元测试 ...

  5. 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 ...

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

    玩转单元测试之WireMock -- Web服务模拟器 WireMock 是一个灵活的库用于 Web 服务测试,和其他测试工具不同的是,WireMock 创建一个实际的 HTTP服务器来运行你的 We ...

  7. 单元测试之NSNull 检测

    本文主要讲 单元测试之NSNull 检测,在现实开发中,我们最烦的往往就是服务端返回的数据中隐藏着NSNull的数据,一般我们的做法是通过[data isKindOfClass:[NSNull cla ...

  8. [转载]单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...

  9. 单元测试之道(使用NUnit)

    首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...

随机推荐

  1. C/C++中作用域详解

    转自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777433.html 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿 ...

  2. js oc与线程

    分属不同的线程 //定义需要暴露给js的内容,这里我们只暴露personName和queryPersonName接口 @protocol PersonProtocol <JSExport> ...

  3. MyBatis(3)-映射文件

    本次博文有疑问,请先看MyBatis(1)-简单入门 和 MyBatis(2)-全局配置文件! 如在有疑问,请留言或者咨询博主,博主每天都在!谢谢! 映射文件: 主要是在xxxmapper.xml文件 ...

  4. Fedora Server 上配置 MariaDb 集群

    下载与安装 MariaDB Galera Cluster 10.1之前的版本安装,输入以下命令进行安装: sudo dnf install mariadb-galera-server 如果电脑上还没安 ...

  5. 浅谈chr(239) . chr(187) . chr(191)的作用

    chr(239) . chr(187) . chr(191) 作为一名初学者,偶尔在代码中发现这么一段代码: json_decode(trim($param, chr(239) . chr(187) ...

  6. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成ResultMap

    其实我一点都不想用mybatis,好多地方得自己写,比如这里. 使用mybatis要写大量的xml,烦的一批.最烦人的莫过于写各种resultmap,就是数据库字段和实体属性做映射.我认为这里应该是m ...

  7. What to do next to activate this settings for already existing users

    Link: http://sharepoint.stackexchange.com/questions/89284/sharepoint-2013-mysite-increase-quota Cent ...

  8. Spring Boot与Mybatis 借助Fastjson快速完成数据解析入库

    通过Spring Boot可以快速搭建一个项目结构,在此基础上本文就通过一个简单的例子,说明如何结合Mybatis 和 Fastjson,快速的完成一个数据的入库基本操作. 添加相关的依赖 <d ...

  9. linux查看网卡地址和硬盘序列号

    linux查看网卡地址命令:ifconfig linux查看硬盘序列号命令:hdparm -i /dev/sda

  10. jdk8新特性-stream

    一.什么是流stream 1.可理解为高级版本的 Iterator 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的. 2.单向,不可往复 数据只能遍历一次,遍历过一次后即用尽了,就好比 ...