Jenkins整合单元测试覆盖率和生成可读性报表
单元测试覆盖率,需要用到开源工具 Coverlet
git地址: https://github.com/coverlet-coverage/coverlet#main-contents
从介绍来看,使用 Coverlet 有三种形式:
1.VSTest engine integration
这种方式是XUnit 默认的方式,新建的项目就已经引用了 coverlet.collector 这个package.
使用方式 分跨平台和windows 平台,主要区别就是使用的默认collect 收集器不一样
dotnet test --collect:"XPlat Code Coverage" // crossplantform.
dotnet test --collect:"Code Coverage" //for windows
这种方式没有生成表格数据,所以推荐下面的第二种。
2.MSBuild task integration
这种方式需要再引用一个package coverlet.msbuild
dotnet add package coverlet.msbuild
使用方式:
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=Cobertura //分项目生产测试分析文件
想合并所有的测试分析文件到一个文件内可以使用下面命令:
dotnet test /p:CollectCoverage=true /p:CoverletOutput =..\results\ /p:MergeWith=..\results\coverage.json /p:CoverletOutputFormat=cobertura%2cjson
其中 %2c是"," ,在powershell 里面“,” 报错,另外实践得知,MergeWith 这个文件怎么改名最终生成的结果都是生成 coverage.json 和 coverage.cobertura.xml 这两个文件
3.As a .NET Global tool (supports standalone integration tests)
没实践过.
报表转换工具Generatereports
上面已经生成了覆盖分析文件,但是可读性不好,怎么转换为可读性更好的Html,这个工具你需要用到, ReportGenerator:
安装
dotnet tool install -g dotnet-reportgenerator-globaltool
转换报表命令
reportgenerator
-reports:"Path\To\TestProject\TestResults\{guid}\coverage.cobertura.xml"
-targetdir:"coveragereport"
-reporttypes:Html
说下高级用法,如果你需要合并几个分析文件,你可以再reports里面用分号隔开。假设你上面的MergeWith 没成功可以用这个办法来合并生成报表文件。
reportgenerator -reports:"XUnit.Coverlet.MSBuild\coverage.cobertura.xml;XUnit.Randoms\coverage.cobertura.xml" -targetdir:"htmlreport" -reporttypes:Html
生成后的HTML
reference: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage?tabs=windows


浙公网安备 33010602011771号