コマンドラインツールによるカバレッジ分析
dotCover コマンドラインツールを使用すると、次のことが可能になります。
任意のテストランナー(MSTest、NUnit、xUnit、MSpec など)を使用してカバレッジ分析を実行し、実行されたテストのカバレッジをカバレッジスナップショットに記録します。
カバレッジスナップショットをマージコマンドでマージします。たとえば、異なるテストフレームワークを使用するユニットテストのスナップショットを結合します。
report コマンドを使用して、さまざまな形式でカバレッジレポートを生成します。
その他多数。
サポートする OS
このツールは、Windows (x86、x64、arm64)、Linux (x64、arm32、arm64、musl-x64、musl-arm64)、macOS (x64、arm64) 上の .NET コマンドラインツールとして使用できます。
ディストリビューション形式
このツールは、クロスプラットフォームのフレームワークに依存する .NET ツールとして配布されます (.NET がインストールされている必要があります)。NuGet パッケージを見る (英語)
dotCover コマンドラインツールをインストールする
dotCover コマンドラインツールをインストールする主な方法は、.NET ツールとしてインストールすることです。ローカルコンピューターまたは CI/CD サーバー上でカバレッジ分析を実行する場合は、.NET ツールとしてインストールすることをお勧めします。
コンピューター上のすべてのプロジェクトのグローバルツールとして dotCover をインストールする
実行:
dotnet tool install --global JetBrains.dotCover.CommandLineTools
特定のプロジェクト / ディレクトリのローカルツールとして dotCover をインストールする
実行:
dotnet tool install JetBrains.dotCover.CommandLineTools --tool-path "some/path"
インストール後、dotCover コマンドを使用して、任意のディレクトリ(グローバルにインストールした場合)またはインストールしたディレクトリ(ローカルにインストールした場合)からコマンドラインツールを実行できます。例:
dotCover コマンドラインツールを構成する
dotCover コマンドラインツールを構成するには、コマンドラインパラメーターまたはプレーンテキスト応答ファイルを使用できます。
例:
すべての OS で同じパラメーター構文を使用できます。
パラメーターはケバブケースで記述する必要があります。例:
--target-executableパラメーター名と値はスペースで区切ります(例:
--target-executable MyApp.exe)スペースを含むパスをエスケープするには、二重引用符とバックスラッシュを追加します(例:
... --target-arguments "\"D:\My Projects\My Application\bin\Debug\AppTests.dll"\")。相対パスは作業ディレクトリから解決されます。
出力パラメーターが指定されていない場合、ツールはデフォルトでカバレッジスナップショット(
.dcvr)を生成します。レポートを取得するには、--json-report-outputまたは--xml-report-outputを使用します。両方を取得するには、--snapshot-outputとレポート出力オプションを指定します。応答ファイルを使用して複雑なパラメーターセットを簡素化します(例:
dotCover cover @args.txt)パラメーターの完全なリストについては、「コマンドリファレンス」を参照してください。
.NET プロジェクトの単体テストカバレッジを分析する
ソリューションフォルダーを開きます。
ソリューションを構築します。
dotnet buildカバレッジ分析を使用してテストを実行し、カバレッジスナップショットを取得します。
dotCover cover --snapshot-output snapshot.dcvr -- test --no-buildスナップショットの代わりに、またはスナップショットに加えてレポートを取得するには、
--json-report-outputまたは--xml-report-outputパラメーターを追加します。dotCover cover --xml-report-output report.xml -- test応答ファイルを使用して
dotCoverを構成した場合は、ファイルへのパスを指定します。dotCover cover @"~/config/config.txt"
.NET フレームワークプロジェクトの単体テストカバレッジを分析する
ユニットテストプロジェクトがビルドされていることを確認してください。
カバレッジ分析を使用してテストを実行し、カバレッジスナップショットを取得します。例: NUnit の場合:
dotCover cover --target-executable "D:\Program Files\NUnit 2.6\bin\nunit-console.exe" --target-arguments "D:\Projects\TheApplication\bin\Debug\AppTests.dll" --snapshot-output snapshot.dcvrここに:
--target-executable– テストランナーへのパス--target-arguments– ランナー(コンパイルされたユニットテストアセンブリ)に渡される引数。これらの引数にスペースを含むパスが含まれている場合は、二重引用符とバックスラッシュを追加してエスケープする必要があります(例:... --target-arguments "\"D:\My Projects\My Application\bin\Debug\AppTests.dll"\")。
スナップショットの代わりに、またはスナップショットに加えてレポートを取得するには、
--json-report-outputまたは--xml-report-outputパラメーターを追加します。dotCover cover --target-executable "D:\Program Files\NUnit 2.6\bin\nunit-console.exe" --target-arguments "D:\Projects\TheApplication\bin\Debug\AppTests.dll" --xml-report-output report.xml応答ファイルを使用して
dotCoverを構成した場合は、ファイルへのパスを指定します。dotCover cover @"D:\Config\config.txt"
カバレッジフィルターを適用する
フィルターを使用して、特定のアセンブリ、属性がマークされたコード、外部プロセスをカバレッジ分析から除外できます。フィルターはノイズを削減し、必要なコードに結果を集中させるのに役立ちます。
--exclude-assemblies <list>– 除外するアセンブリ名のコンマ区切りリスト。ワイルドカード(*)を使用できます。例:dotCover cover --exclude-assemblies MyTests,*Helpers--exclude-attributes <list>– 完全修飾属性名のコンマ区切りリスト。これらの属性でマークされたコードは除外されます。ワイルドカード(*)を使用できます。例:dotCover cover --exclude-attributes System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute--exclude-processes <list>– カバレッジ分析から除外するプロセス名のコンマ区切りリスト。ワイルドカード(*)を使用できます。例:dotCover cover --exclude-processes vstest.discovery.engineコマンドライン引数で指定されたフィルターとレスポンスファイルで定義されたフィルターを組み合わせることができます。dotCover は、すべてのソースからのすべてのリスト値をマージします。例:
dotCover cover --exclude-assemblies "*.Tests" @filters.txtこの例では、
filters.txtには次の内容が含まれる可能性があります。--exclude-assemblies ThirdPartyLib --exclude-attributes System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
複数のテストプロジェクトの範囲を分析する
ソリューションに複数のテストプロジェクトが含まれている場合、それらすべてのコードカバレッジを収集し、単一の統合レポートを生成することをお勧めします。推奨されるアプローチは、すべてのプロジェクトで同じユニットテストフレームワークを使用しているかどうかによって異なります。
プロジェクトは同じテストフレームワークを使用する
ソリューション内のすべてのテストプロジェクトで同じユニットテストフレームワークを使用している場合、単一のカバレッジセッションでまとめて実行できます。この方法は、すべてのプロジェクトを単一の dotnet test 呼び出しで実行できる場合にのみ適用できます。SDK 形式のプロジェクトファイルを使用する MSTest、xUnit、NUnit プロジェクトで機能します。
ソリューションを構築します。
dotnet buildカバレッジ付きのすべてのテストを実行し、スナップショットを保存します。
dotCover cover --snapshot-output snapshot.dcvr -- test --no-buildスナップショットの代わりに、またはスナップショットに加えてレポートを生成するには、レポート出力パラメーターを使用します。
dotCover cover --xml-report-output report.xml -- test --no-build
プロジェクトごとに異なるテストフレームワークを使用する
ソリューションに、異なる単体テストフレームワーク (MSTest や NUnit など) を使用するテストプロジェクトが含まれている場合は、プロジェクトごとにカバレッジを個別に実行し、結果のカバレッジスナップショットを 1 つのレポートにマージする必要があります。

各テストプロジェクトごとにレスポンスファイルを作成します。これらのファイルは、各テストの実行方法とスナップショットの保存場所を定義します。
args1.txtからTestProject1(MSTest) へ:--target-executable "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\MSTest.exe" --target-arguments "TestProject1.dll" --target-working-directory "D:\Projects\MyApp\bin\Debug" --snapshot-output Snapshot1.dcvrTestProject2のargs2.txt(NUnit):--target-executable "C:\Tools\NUnit\nunit3-console.exe" --target-arguments "TestProject2.dll" --target-working-directory "D:\Projects\MyApp\bin\Debug" --snapshot-output Snapshot2.dcvr各プロジェクトのカバレッジを実行します。
dotCover cover @args1.txt dotCover cover @args2.txtこれにより、
Snapshot1.dcvrとSnapshot2.dcvrという 2 つのスナップショットファイルが生成されます。スナップショットを 1 つに結合します。
dotCover merge --snapshot-source Snapshot1.dcvr,Snapshot2.dcvr --snapshot-output MergedSnapshots.dcvrマージされたスナップショットからカバレッジレポートを生成します。
dotCover report --snapshot-source MergedSnapshots.dcvr --xml-report-output CoverageReport.xml
シンボルファイルを検索する (PDB)
対象バイナリのシンボルファイル(PDB)を見つけることは、カバレッジを計算するために不可欠です。単体テストやスタートアッププロジェクトをカバーする場合、dotCover は現在のソリューションの構造を使用してシンボルファイルを簡単に見つけます。
デフォルトでは、次の場所にあるシンボルファイルを検索します。
バイナリファイルが存在するディレクトリと同じディレクトリ
にバイナリファイル内で指定されたデバッグディレクトリ
に_NT_SYMBOL_PATH環境変数およびレジストリで指定されたすべてのディレクトリ内。