使用coverlet檢視.NET Core應用的測試覆寫率
代碼覆寫(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/
這個簡介寫完了...............