ヒント
Microsoft.Testing.Platform.MSBuild (MSTest、NUnit、xUnit ランナーによって推移的に含まれる) を使用する場合、コード カバレッジ拡張機能は NuGet パッケージをインストールするときに自動的に登録されます。コードの変更は必要ありません。
コード カバレッジ機能を使用すると、単体テストなどのコード化されたテストによってテストされているプロジェクトのコードの割合を調べることができます。 バグから効果的に保護するには、コードの大部分をカバーするようにテストを実行する必要があります。
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 コード カバレッジの設定。 |
使用可能なオプションの詳細については、設定とサンプルを参照してください。
注
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 Testing Platform Integration (coverlet.MTP) は、 coverlet.collector 機能を実装する Microsoft.Testing.Platform のネイティブ拡張機能です。
coverlet.MTP NuGet パッケージをテスト プロジェクトに追加します。
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 のドキュメントを参照してください。
.NET