代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。

Visual Studio 2017的企业版可以直接查看测试的代码覆盖率, 而由于我只能用得起Visual Studio Community和VS Code所以不得不寻找其它的免费办法来查看测试覆盖率.

coverlet

我找到了 coverlethttps://github.com/tonerdo/coverlet, 它是一个针对.NET Core的跨平台代码覆盖率的库

coverlet目前支持两种方式操作:

  1. 作为全局工具使用命令:  dotnet tool install --global coverlet.console

    安装后, 就可以使用coverlet命令了, 查看帮助: coverlet --help, 这种我就不介绍了, 可以查看官方文档.

  2. 在测试项目通过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应用的测试覆盖率的更多相关文章

  1. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  2. 查看SQL语句执行时间与测试SQL语句性能

    查看SQL语句执行时间与测试SQL语句性能 写程序的人,往往需要分析所写的SQL语句是否够优化.是否能提升执行效率,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了 ...

  3. .Net Core Socket 压力测试

    原文:.Net Core Socket 压力测试 .Net Core Socket 压力测试 想起之前同事说go lang写的push service单机可以到达80万连接,于是就想测试下.Net C ...

  4. spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

    1. 目的:       junit 单元测试,Cobertura   测试覆盖率报告       项目目录结构          2. maven 配置     <project xmlns= ...

  5. Maven单元测试报告及测试覆盖率

     对junit单元测试的报告:类似这样的结果 ------------------------------------------------------- T E S T S ----------- ...

  6. [Node.js] Express的测试覆盖率

    原文地址:http://www.moye.me/2014/12/03/express_coverage/ 引子 有群友问到Express怎么做 单元测试/覆盖率测试,这是上篇所遗漏的,特此补上 Exp ...

  7. Eclipse创建Maven Web项目 + 测试覆盖率 + 常见问题(2015.07.14——湛耀)

    Eclipse创建Maven web项目: 到此,并没有创建好,接下来一步步解决问题: 问题:无法创建src/main/java目录 解决: 右键项目选择[properties] 点击[OK] 问题: ...

  8. 使用Cobertura统计JUnit测试覆盖率

    这是一个JavaProject,关于Cobertura的用法详见代码注释 首先是应用代码(即被测试的代码) package com.jadyer.service; public class Calcu ...

  9. 用 Cobertura 测量测试覆盖率

      尽管测试先行编程(test-first programming)和单元测试已不能算是新概念,但测试驱动的开发仍然是过去 10 年中最重要的编程创新.最好的一些编程人员在过去半个世纪中一直在使用这些 ...

随机推荐

  1. mysq数据库相关操作

    (一)常用SQL语句 1.SELECT USER() 得到登陆的用户 2.SELECT VERSION() 得到mysql的版本信息 3.SELECT NOW() 得到当前的时间 4.SELECT D ...

  2. 关于Kafka日志留存策略的讨论

    关于Kafka日志留存(log retention)策略的介绍,网上已有很多文章.不过目前其策略已然发生了一些变化,故本文针对较新版本的Kafka做一次统一的讨论.如果没有显式说明,本文一律以Kafk ...

  3. api_response.go

    , "METHOD_NOT_ALLOWED"}         }, Log(l), V1)(w, req, nil)     }) }

  4. BZOJ_4873_[Shoi2017]寿司餐厅_最大权闭合子图

    BZOJ_4873_[Shoi2017]寿司餐厅_最大权闭合子图 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=4873 分析:我们发现分数正负 ...

  5. Java IO--字符流--InputStreamReader 和 OutputStreamWriter

    今天继续学习字符流的子类!!!! 先来熟悉一下适配器设计模式:(手写的,,嘿嘿) 因为据说InputStreamReader 和OutputStreamWriter采用了适配器模式(现在我还没能理解, ...

  6. 有趣的8个IT冷知识

    阅读本文大概需要 2.8 分钟. 想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门 ...

  7. Netty4.x整合SpringBoot2.x使用Protobuf3详解

    前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会介绍下用法,至于Netty在netty 之 telnet HelloWor ...

  8. ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法

    一.前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实现对于数据库的快速访问,后来,ORM(Object Relatio ...

  9. 带你学习AOP框架之Aspect.Core[1]

    在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的 ...

  10. asp.net core系列 49 Identity 授权(上)

    一.概述 授权是指用户能够访问资源的权限,如页面数据的查看.编辑.新增.删除.导出.下载等权限.ASP.NET Core 授权提供了多种且灵活的方式,包括:Razor pages授权约定.简单授权.R ...