使用 coverlet 檢視.NET Core應用的測試覆蓋率

solenovex發表於2018-07-17

程式碼覆蓋(Code coverage)是軟體測試中的一種度量,描述程式中原始碼被測試的比例和程度,所得比例稱為程式碼覆蓋率。

Visual Studio 2017的企業版可以直接檢視測試的程式碼覆蓋率, 而由於我只能用得起Visual Studio Community和VS Code所以不得不尋找其它的免費辦法來檢視測試覆蓋率.

coverlet

我找到了 coverlethttps://github.com/tonerdo/coverlet, 它是一個針對.NET Core的跨平臺程式碼覆蓋率的庫

coverlet目前支援兩種方式操作:

  1. 作為全域性工具使用命令:  dotnet tool install --global coverlet.console

     安裝後, 就可以使用coverlet命令了, 檢視幫助: coverlet --help, 這種我就不介紹了, 可以檢視官方文件.

  2. 在測試專案通過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/

 

這個簡介寫完了...............

相關文章