.NET Core單元測試之搞死開發的覆蓋率統計(coverlet + ReportGenerator )
.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就能看到對應的測試報告了.
全文完.
明年見!
.NET Core單元測試之搞死開發的覆蓋率統計(coverlet + ReportGenerator )