1. 程式人生 > >.NET Core單元測試之搞死開發的覆蓋率統計(coverlet + ReportGenerator )

.NET Core單元測試之搞死開發的覆蓋率統計(coverlet + ReportGenerator )

.... 更新 and enc team port ide git 微軟

.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 )