.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 就能看到对应的测试报告了.
全文完.
明年见!