共用方式為


程式碼涵蓋範圍

小提示

使用 Microsoft.Testing.Platform.MSBuild (MSTest、NUnit 和 xUnit 執行程式可傳遞包含)時,安裝 NuGet 套件時,程式碼覆蓋範圍擴充會自動註冊——無需修改程式碼。

您可以使用程式碼覆蓋率功能,來判斷例如單元測試等程式測試所測試的專案程式碼比例。 為了有效防範錯誤,您的測試應該執行或 涵蓋大部分程式碼

Microsoft程式代碼涵蓋範圍

Microsoft的程式碼涵蓋分析可以應用於受控(CLR)和非受控(原生)程式碼。 同時支援靜態和動態檢測。 此擴充套件需要 Microsoft.Testing.Extensions.CodeCoverage NuGet 套件。

備註

預設會在擴充功能中停用非受控(原生)程式碼涵蓋範圍。 視需要使用旗標 EnableStaticNativeInstrumentationEnableDynamicNativeInstrumentation 加以啟用。 如需非受控程式碼覆蓋範圍的詳細資訊,請參閱 靜態和動態本機化檢測

這很重要

套件附帶 Microsoft .NET 程式庫,採用閉源但免費使用的授權模式。

如需Microsoft程式代碼涵蓋範圍的詳細資訊,請參閱其 GitHub 頁面

選項

選項 Description
--coverage 使用 dotnet-coverage 工具收集程式代碼涵蓋範圍。
--coverage-output 所產生涵蓋範圍檔案的名稱或路徑。 預設情況下,檔案是 TestResults/<guid>.coverage
--coverage-output-format 輸出檔案格式。 支援的值為:coveragexmlcobertura。 預設值為 coverage
--coverage-settings XML 代碼涵蓋範圍設定

如需可用選項的詳細資訊,請參閱 設定範例

備註

在 Microsoft.Testing.Extensions.CodeCoverage 中,IncludeTestAssembly 的預設值是 false,而在 VSTest 以前則是 true。 這意味著測試專案預設被排除。 如需相關資訊,請參閱 程式碼涵蓋範圍配置

版本相容性

下表顯示不同版本的 Microsoft.Testing.Extensions.CodeCoverage 與 Microsoft.Testing.Platform 之間的相容性:

Microsoft.Testing.Extensions.CodeCoverage Microsoft.Testing.Platform
18.1.x 2.0.x
18.0.x 版本 1.8.x 版本
17.14.x 1.6.2

備註

為了獲得最佳相容性和最新功能,建議同時使用這兩個套件的最新版本。

被單

Coverlet Microsoft 測試平台整合(coverlet.MTP)是 Microsoft.Testing.Platform 的原生擴充套件,實現了 coverlet.collector 功能。

coverlet.MTP NuGet 套件加入至您的測試專案:

dotnet add package coverlet.MTP

要收集程式碼覆蓋率,請使用以下 --coverlet 標記執行測試:

dotnet test --coverlet

或者使用 --coverlet flag 執行你的測試執行檔。

dotnet exec <test-assembly.dll> --coverlet

測試執行結束後, coverage.json 會在目前目錄中產生包含結果的檔案。

選項

選項 Description
--coverlet 啟用代碼覆蓋率資料收集。
--coverlet-output-format <format> 覆蓋率報告的輸出格式。 支援格式:jsonlcovopencovercoberturateamcity及 。 請多次指定以包含多種格式。
--coverlet-include <filter> 包含與濾波器相符的組件,例如 [Assembly]Type。 可多次指定以添加更多過濾器。
--coverlet-include-directory <path> 為原始檔案提供額外的目錄。 多次指定以增加更多目錄。
--coverlet-exclude <filter> 排除與濾波器匹配的組件,例如 [Assembly]Type。 可多次指定以添加更多過濾器。
--coverlet-exclude-by-file <pattern> 排除與球狀模式相符的原始檔案。 請重複指定以添加更多模式。
--coverlet-exclude-by-attribute <attribute> 排除以特定屬性裝飾的方法或類別。 多次指定以增加更多屬性。
--coverlet-include-test-assembly 將測試組件納入覆蓋報告中。
--coverlet-single-hit 對於程式碼中的每個位置,將命中次數限制為一次。
--coverlet-skip-auto-props 跳過測試覆蓋中自動實作的屬性。
--coverlet-does-not-return-attribute <attribute> 標記方法未回傳的屬性。 多次指定以增加更多屬性。
--coverlet-exclude-assemblies-without-sources <value> 排除沒有原始碼的組件。 值: MissingAllMissingAnyNone和 。

更多資訊請參考 coverlet.MTP 文件