程式碼覆蓋(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/
這個簡介寫完了...............