コード カバレッジ

ヒント

Microsoft.Testing.Platform.MSBuild (MSTest、NUnit、xUnit ランナーによって推移的に含まれる) を使用する場合、コード カバレッジ拡張機能は NuGet パッケージをインストールするときに自動的に登録されます。コードの変更は必要ありません。

コード カバレッジ機能は、Microsoftで使用できます。Testing.Platform (MTP) を使用して、単体テストなどのコード化されたテストによってテストされているプロジェクトのコードの割合を決定します。 バグから効果的に保護するには、コードの大部分をカバーするようにテストを実行する必要があります。

Microsoft コード カバレッジ

Microsoft コード カバレッジ分析は、マネージド (CLR) コード とアンマネージド (ネイティブ) コードの両方で実行できます。 静的と動的の両方のインストルメンテーションがサポートされています。 この拡張機能には、 Microsoft.Testing.Extensions.CodeCoverage NuGet パッケージが必要です。

注

拡張機能では、アンマネージ (ネイティブ) コード カバレッジが既定で無効になっています。 必要に応じて、EnableStaticNativeInstrumentation および EnableDynamicNativeInstrumentation フラグを使用して有効にしてください。 アンマネージド コード カバレッジの詳細については、「静的および動的ネイティブ インストルメンテーション」を参照してください。

Important

パッケージは、ライセンス モデルを使用するために Microsoft .NET ライブラリのクローズド ソースで無料で出荷されます。

Microsoft コード カバレッジの詳細については、GitHub ページを参照してください。

オプション

Option [説明]
--coverage dotnet-coverage ツールを使用してコード カバレッジを収集します。
--coverage-output 生成されたカバレッジ ファイルの名前またはパス。 既定では、ファイルは TestResults/<guid>.coverageです。
--coverage-output-format 出力ファイル形式。 サポートされている値: coverage、xml、cobertura。 既定値は coverage です。
--coverage-settings XML コード カバレッジの設定。

使用可能なオプションの詳細については、settings および サンプルを参照してください。

注

Microsoft.Testing.Extensions.CodeCoverage の IncludeTestAssembly の既定値は falseされていますが、VSTest では true 。 つまり、テスト プロジェクトは既定で除外されます。 詳細については、「Code Coverage の構成」を参照>。

カバレッジの概要としきい値

Important

MTP 2.4 以降では、ファーストクラスのカバレッジ結果モデルを使用できます。

互換性のあるコレクターは、カバー済みおよびカバー可能な測定値、しきい値評価、ならびにカバレッジ レポートへの参照を、1 つの関連付けられたテスト カバレッジ結果として公開できます。 ターミナル レポーターと互換性のあるレポート コンシューマーは、コレクター固有のファイルを解析せずに測定値をレンダリングし、パーセンテージを導き出します。

コレクターは、このモデルを発行するかどうかを選択します。 コレクターの文書化されたオプションを使用して、コレクションとしきい値を構成します。

発行されたしきい値の評価が失敗すると、コード 14で正常に実行が終了します。 しきい値エラーがプロセスを失敗させるべきではない場合は、 --ignore-exit-code 14 を使用します。

バージョン互換性

次の表に、Microsoft.Testing.Extensions.CodeCoverage と MTP の異なるバージョン間の互換性を示します。

Microsoft.Testing.Extensions.CodeCoverage MTP
18.1.x 2.0.x
18.0.x 1.8.x
17.14.x 1.6.2

注

互換性と最新の機能を最大限に活用するには、両方のパッケージの最新バージョンを一緒に使用することをお勧めします。

Coverlet

Coverlet Microsoft Testing Platform Integration (coverlet.MTP) は、coverlet.collector 機能を実装する MTP のネイティブ拡張機能です。

coverlet.MTP NuGet パッケージをテスト projectに追加します。

dotnet add package coverlet.MTP

コード カバレッジを収集するには、 --coverlet フラグを使用してテストを実行します。

dotnet test --coverlet

または、 --coverlet フラグを使用してテスト実行可能ファイルを実行します。

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

テストの実行後、結果を含む coverage.json ファイルが現在のディレクトリに生成されます。

オプション

Option [説明]
--coverlet コードのカバレッジ データ コレクションを有効にします。
--coverlet-output-format <format> カバレッジ レポートの出力形式。 サポートされている形式: json、 lcov、 opencover、 cobertura、および teamcity。 複数の形式を含めるには、複数回指定します。
--coverlet-include <filter> [Assembly]Typeなど、フィルターに一致するアセンブリを含めます。 フィルターを追加するには、複数回指定します。
--coverlet-include-directory <path> ソース ファイル用の追加のディレクトリを含めます。 ディレクトリを追加するには、複数回指定します。
--coverlet-exclude <filter> [Assembly]Typeなど、フィルターに一致するアセンブリを除外します。 フィルターを追加するには、複数回指定します。
--coverlet-exclude-by-file <pattern> glob パターンに一致するソース ファイルを除外します。 パターンを追加するには、複数回指定します。
--coverlet-exclude-by-attribute <attribute> 特定の属性で修飾されたメソッドまたはクラスを除外します。 属性を追加するには、複数回指定します。
--coverlet-include-test-assembly カバレッジ レポートにはテスト アセンブリも含めます。
--coverlet-single-hit コード内の場所ごとにヒット数を 1 に制限します。
--coverlet-skip-auto-props カバレッジで自動実装プロパティをスキップします。
--coverlet-does-not-return-attribute <attribute> メソッドを返さないとマークする属性。 属性を追加するには、複数回指定します。
--coverlet-exclude-assemblies-without-sources <value> ソース コードを使用せずにアセンブリを除外します。 値: MissingAll、 MissingAny、および None。

詳細については、coverlet.MTP のドキュメントを参照してください。