使用 coverlet 查看.NET Core应用的测试覆盖率

C#

浏览数:360

2019-4-15

代码覆盖(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/

这个简介写完了……………