使用 coverlet 查看.NET Core應用的測試覆蓋率
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
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/
這個簡介寫完了...............
使用 coverlet 查看.NET Core應用的測試覆蓋率