代码覆盖(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/
这个简介写完了...............