使用 coverlet 查看.NET Core应用的测试覆盖率
代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。
Visual Studio 2017的企业版可以直接查看测试的代码覆盖率, 而由于我只能用得起Visual Studio Community和VS Code所以不得不寻找其它的免费办法来查看测试覆盖率.
coverlet
我找到了 coverlet: https://github.com/tonerdo/coverlet, 它是一个针对.NET Core的跨平台代码覆盖率的库
coverlet目前支持两种方式操作:
- 作为全局工具使用命令: dotnet tool install --global coverlet.console
安装后, 就可以使用coverlet命令了, 查看帮助: coverlet --help, 这种我就不介绍了, 可以查看官方文档.
- 在测试项目通过Nuget或dotnet cli添加该库: dotnet add package coverlet.msbuild. 这种方式下, 当它被启用后, 它会集成到dotnet test 这个命令架构里, 在测试运行后自动生成覆盖率报告.
启用coverlet
很简单, 在测试项目下执行测试命令, 并加上后边的启用参数即可: dotnet test /p:CollectCoverage=true .

默认报告的格式是json.
报告格式
coverlet还支持其它几种格式, 可以通过CoverletOutputFormat参数指定.
目前支持这几种格式:
- json (default)
- lcov
- opencover
- cobertura
例如想要改用opencover格式: 那么: dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover 这样写即可.
其生成的报告文件默认名是:

其它参数
coverlet还有一些其它参数, 使用都很简单, 请查看官方文档吧: https://github.com/tonerdo/coverlet#msbuild
查看报告
coverlet可以生成报告, 但是都是那些json, xml等数据格式, 通过命令行窗口也只能看见总览的数据. 想要查看用户能看明白的详细报告需要使用一些工具, 例如ReportGenerator或SonarCloud.
ReportGenerator
ReportGenerator在本地就可以使用, 它支持opencover格式等, 在测试项目安装: dotnet add package ReportGenerator --version 4.0.0-alpha12
安装后按照说明操作即可:

在我电脑上我使用的命令如下: dotnet C:\Users\solen\.nuget\packages\reportgenerator\4.0.0-alpha12\tools\netcoreapp2.0\ReportGenerator.dll -reports:.\coverage.opencover.xml -targetdir:F:\Reports


然后到输出目录, 打开index.htm即可:

里面还可以点击进行一些操作:

SonarCloud
它是一个云服务, 但是需要安装java环境, 我嫌麻烦就不介绍了. 可自行到官网了解: https://sonarcloud.io/
这个简介写完了...............
使用 coverlet 查看.NET Core应用的测试覆盖率的更多相关文章
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
- 查看SQL语句执行时间与测试SQL语句性能
查看SQL语句执行时间与测试SQL语句性能 写程序的人,往往需要分析所写的SQL语句是否够优化.是否能提升执行效率,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了 ...
- .Net Core Socket 压力测试
原文:.Net Core Socket 压力测试 .Net Core Socket 压力测试 想起之前同事说go lang写的push service单机可以到达80万连接,于是就想测试下.Net C ...
- spring && Cobertura && maven &&junit 单元测试以及测试覆盖率
1. 目的: junit 单元测试,Cobertura 测试覆盖率报告 项目目录结构 2. maven 配置 <project xmlns= ...
- Maven单元测试报告及测试覆盖率
对junit单元测试的报告:类似这样的结果 ------------------------------------------------------- T E S T S ----------- ...
- [Node.js] Express的测试覆盖率
原文地址:http://www.moye.me/2014/12/03/express_coverage/ 引子 有群友问到Express怎么做 单元测试/覆盖率测试,这是上篇所遗漏的,特此补上 Exp ...
- Eclipse创建Maven Web项目 + 测试覆盖率 + 常见问题(2015.07.14——湛耀)
Eclipse创建Maven web项目: 到此,并没有创建好,接下来一步步解决问题: 问题:无法创建src/main/java目录 解决: 右键项目选择[properties] 点击[OK] 问题: ...
- 使用Cobertura统计JUnit测试覆盖率
这是一个JavaProject,关于Cobertura的用法详见代码注释 首先是应用代码(即被测试的代码) package com.jadyer.service; public class Calcu ...
- 用 Cobertura 测量测试覆盖率
尽管测试先行编程(test-first programming)和单元测试已不能算是新概念,但测试驱动的开发仍然是过去 10 年中最重要的编程创新.最好的一些编程人员在过去半个世纪中一直在使用这些 ...
随机推荐
- setInterval setTimeout 详解
JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( ...
- 16.app后端如何保证通讯安全--url签名
app和后端的通讯过程中,api请求有可能被别人截取或不小心泄露.那么,怎么保证api请求的安全呢?在这篇文章中,介绍一种常见的保证api请求安全的做法--url签名. 1. url签名详解 在前一篇 ...
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 两个标签页定位第二个标签页元素时显示element not visible
问题描述 web页面有两个标签页, 当转换到第二个标签页定位元素时, 显示element not visible. 代码 ... //省略 WebElement ele= browser.getEle ...
- Log4j2中的同步日志与异步日志
1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式. 2.Log4j2中的同步日志 所谓同步日 ...
- fiddler抓包软件的使用--请求头--ajax
User-Agent: FiddlerHost: localhost:49828Content-Length: 0Accept: application/xmlContent-Type: applic ...
- txn.go
package clientv3 import ( "sync" pb "github.com/coreos/etcd/etcdserver/etcdse ...
- bzoj2437 [Noi2011]兔兔与蛋蛋
二分图博弈果然都是一个套路,必经点必胜,非必经点必败, 但是肯定不能每走一步就重新建图判断必胜还是必败,那么我们可以这样:每走一步就把这个点删掉,然后find他原来的匹配,如果找不到,就说明他是必经点 ...
- JVM内存异常与常用内存参数设置总结
Java Web程序由于引入大量第三方java类库,在启动时经常会遇到内存溢出(Memory Overflow)或者内存泄漏(Memory leak)问题,导致程序启动失败. 一.OOM异常分类: O ...
- 记一次MySQL数据库拒绝访问的解决过程
问题背景 用wordpress搭博客,数据库采用MySQL.为了调试方便,创建账户my_account ,允许它从任意主机访问数据库. CREATE USER `my_account`@'%' IDE ...