.NET 使用 Coverlet 統計單元測試覆蓋率

代碼覆蓋率(Code coverage)是指在軟件測試中測試用例執行時覆蓋的代碼量與總代碼量的比例。代碼覆蓋率是軟件測試中一個重要的指標,它對於保障軟件質量、提高軟件可靠性和可維護性具有許多好處:發現代碼缺陷、提高代碼的可維護性、確保代碼的正確性和優化測試用例質量等。

我們常用的 IDE,Visual Studio、Rider 等都直接查看覆蓋率,但是如果我們想將覆蓋率的管控,配置到自動化的質量管控流程裏,如 Github Actions、Azure Devops、Github CI 和 Sonarqube 等,需要我們額外做一些工作。這裏我們可以藉助開源項目 Coverlet(https://github.com/tonerdo/coverlet)

1.使用 Coverlet

默認情況下執行 dotnet test 的結果:

image-20230307140341997

1.1 方式一

安裝 Nuget 包

dotnet add package coverlet.msbuild

然後執行測試命令

dotnet test /p:CollectCoverage=true

image-20230307140607321

可以看到控制檯會輸出覆蓋率結果,並且也會輸出到 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.參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章