代碼覆蓋率(Code coverage)是指在軟體測試中測試用例執行時覆蓋的代碼量與總代碼量的比例。代碼覆蓋率是軟體測試中一個重要的指標,它對於保障軟體質量、提高軟體可靠性和可維護性具有許多好處:發現代碼缺陷、提高代碼的可維護性、確保代碼的正確性和優化測試用例質量等。 我們常用的 IDE,Visua ...
代碼覆蓋率(Code coverage)是指在軟體測試中測試用例執行時覆蓋的代碼量與總代碼量的比例。代碼覆蓋率是軟體測試中一個重要的指標,它對於保障軟體質量、提高軟體可靠性和可維護性具有許多好處:發現代碼缺陷、提高代碼的可維護性、確保代碼的正確性和優化測試用例質量等。
我們常用的 IDE,Visual Studio、Rider 等都直接查看覆蓋率,但是如果我們想將覆蓋率的管控,配置到自動化的質量管控流程里,如 Github Actions、Azure Devops、Github CI 和 Sonarqube 等,需要我們額外做一些工作。這裡我們可以藉助開源項目 Coverlet(https://github.com/tonerdo/coverlet)
1.使用 Coverlet
預設情況下執行 dotnet test
的結果:
1.1 方式一
安裝 Nuget 包
dotnet add package coverlet.msbuild
然後執行測試命令
dotnet test /p:CollectCoverage=true
可以看到控制台會輸出覆蓋率結果,並且也會輸出到 json 文件。
1.2 方式2
安裝 .NET Global Tool
dotnet tool install --global coverlet.console
然後執行 coverlet 命令
coverlet /path/to/test-assembly.dll --target "dotnet" --targetargs "test /path/to/test-project --no-build"
還是推薦第一種方式比較省事。
2.更改輸出格式
Coverlet 的預設輸出格式是 Json,如果要接入 codecov.io 等平臺的話是需要 opencover 格式的,通過 CoverletOutputFormat
參數指定。
示例:
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
3.參考資料
目前學習.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程