JetBrains TeamCity でカバレッジを設定する
通常、.NET ソリューションの継続的インテグレーション (CI) ビルドは、テストのコンパイルと実行を含む一連のタスクで構成されます。 JetBrains TeamCity CI サーバーの観点では、これらのタスクはビルドステップと呼ばれます。 TeamCity は dotCover コマンドラインツールにバンドルされているため、対応するビルドステップオプションを有効にするだけでコードカバレッジデータを収集できます。 TeamCity が収集したカバレッジ結果は、TeamCity 内でレポートとして表示したり、 カバレッジスナップショットとしてダウンロードして Visual Studio 内で表示したりできます。
例: アプリケーションとテストアセンブリの 2 つのプロジェクトからなるシンプルなソリューションがあります。 私たちの作業は、アプリケーションをコンパイルし、テストを実行し、テストカバレッジ統計を収集する継続的な統合ビルドを設定することです。 ワークフローは、使用している単体テストランナーによって異なります。
MSTest/NUnit
MSTest と NUnit のテストランナーは、TeamCity からすぐに提供されるため、一般的に必要なのは、対応するランナーを使用してビルドステップを追加することだけです。
TeamCity で MSTest/NUnit テストのカバレッジ分析を設定する
TeamCity で 新規ビルドプロジェクトを作成し、VCS ルートをセットアップしてください。 次に新しいビルドステップを追加します。プロジェクト内に 新規プロジェクトと 新規ビルド構成を作成してください。
最初のビルドステップを追加し、ソリューションとテストをビルドしてください。 この例では、 .NET ランナーを使用します(ビルドエージェントに ソフトウェアのインストールが必要です)が、ビルド方法には他にも MSBuild の直接実行やバッチファイルの実行などさまざまなオプションがあります。

ここでやっているのは解決策を構築することだけです。 カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。 MSTest テストを使用する場合は、 コマンド として `vstest` を持つ .NET ランナーを選択します。 サンプルソリューションでは NUnit(英語) テストを使用しているため、 NUnit ランナーを選択します。 ここでは、NUnit バージョン、.NET ランタイムパラメーター、テストアセンブリへのパスも指定します。

カバレッジを設定するときです。 .NET カバレッジツール では、 JetBrains dotCover を選択します。

アセンブリフィルター では、カバレッジ対象のアセンブリ(アセンブリ名のみ)を
+:の接頭辞として追加し、–:でカバレッジしたくないアセンブリを除外します。 この例では、実行中のテストを含むMainTestsアセンブリを除外しています。設定を保存して実行し、動作の仕方を確認します。
ビルドが完了すると、 概要 タブにコードカバレッジに関する短いレポートが表示されます。

詳細を表示するには、 コードカバレッジ タブに切り替えます。 ここでは、テストがカバーするクラス / メソッドの量に関する詳細な統計を表示できます。

あるいは、個々のクラスにドリルダウンしてコードカバレッジを調べることもできます。

ビルドアーティファクトには、カバレッジファイルが含まれています。

実際の環境では、バイナリをビルドするものとコードカバレッジを収集するものの 2 つの異なるビルド構成がある場合があることに注意してください。 その場合、2 番目のビルド構成がソースファイルを見つけることができるように、スナップショットの依存関係を使用する必要があります。 そうしないと、ソースコードを表示しようとしたときに
Source code is not availableメッセージが表示されます。
この問題を解決するには、 TeamCity のドキュメントの指示に従ってください。
xUnit
xUnit テストの実行と取得の主な問題は、xUnit が TeamCity によってすぐにサポートされていないことです。 これにより、解決しなければならない 2 つの問題が生じます。
ソリューションを構築するには、xUnit パッケージを提供する必要があります。
バイナリライブラリを VCS にコミットすることは良い習慣ではないため、パッケージの復元は、コンパイル段階の前に別のビルドステップである必要があります。
xUnit テストランナーを提供し、手動で実行する必要があります。
良いニュース:
ランナーは NuGet パッケージとして配布されるため、ソリューションの中ですぐに参照され、ビルド中にリストアされます(a を参照)。
ランナーが TeamCity サービスメッセージの形式で結果を提供するため、テスト結果を得るために必要な追加のアクションはありません。
TeamCity で xUnit テストのカバレッジ分析を設定する
Visual Studio でソリューションを開きます。 テストプロジェクトでは、
xunit.runner.consoleNuGet パッケージへの参照を追加します。
TeamCity で 新規ビルドプロジェクトを作成し、VCS ルートをセットアップしてください。 次に新しいビルドステップを追加します。プロジェクト内に 新規プロジェクトと 新規ビルド構成を作成してください。
TeamCity が NuGet サーバーとして構成されていることを確認してください。 で NuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているか確認します。 該当するテーブルがない場合は、 ツールをインストール ... ボタンをクリックして NuGet を TeamCity に追加し、必要な手順に従ってください。

ソリューションによって参照される NuGet パッケージを復元するビルドステップを追加します。 ランナータイプ として NuGet インストーラー を使用してください。

最初のビルドステップを追加し、ソリューションとテストをビルドしてください。 この例では、 .NET ランナーを使用します(ビルドエージェントに ソフトウェアのインストールが必要です)が、ビルド方法には他にも MSBuild の直接実行やバッチファイルの実行などさまざまなオプションがあります。

ここでやっているのは解決策を構築することだけです。 カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。
xUnit ランナーは単純な .exe ファイルとして実行されるため、 .NET ランナーを選択します。
コマンド で <カスタム> を選択します。
プロジェクトのターゲットとなる .NET フレームワークバージョンに対応するランナーバージョンを使用していることを確認してください。
%system.teamcity.build.workingDir%\SimpleTestsProject\packages\xunit.runner.console.2.3.1\tools\net452\xunit.console.exeコマンドラインパラメーター フィールドには、コンパイルされたテストアセンブリへのパスが含まれている必要があります。

カバレッジを設定するときです。 .NET カバレッジツール では、 JetBrains dotCover を選択します。

アセンブリフィルター では、カバレッジ対象のアセンブリ(アセンブリ名のみ)を
+:の接頭辞として追加し、–:でカバレッジしたくないアセンブリを除外します。 この例では、実行中のテストと xUnit アセンブリに関連するすべてを含むMainTestsアセンブリを除外します。設定を保存して実行し、動作の仕方を確認します。
ビルドが完了すると、 概要 タブにテスト結果とコードカバレッジに関する短いレポートが表示されます。

詳細を表示するには、 コードカバレッジ タブに切り替えます。 ここでは、テストがカバーするクラス / メソッドの量に関する詳細な統計を表示できます。

あるいは、個々のクラスにドリルダウンしてコードカバレッジを調べることもできます。

ビルドアーティファクトには、カバレッジファイルが含まれています。
MSpec
MSpec は TeamCity で一部サポートされています。対応するビルドステップランナーはありますが、MSpec テストランナーはバンドルに含まれていないため、手動で TeamCity エージェントにインストールする必要があります。 幸い、ランナーは NuGet パッケージとして配布済みなので、ソリューションで直接参照でき、ビルド時にリストアされます。
TeamCity で MSpec テストのカバレッジ分析を設定する
Visual Studio でソリューションを開きます。 テストプロジェクトで、
Machine.Specifications.Runner.ConsoleNuGet パッケージへの参照を追加します。
TeamCity で 新規ビルドプロジェクトを作成し、VCS ルートをセットアップしてください。 次に新しいビルドステップを追加します。プロジェクト内に 新規プロジェクトと 新規ビルド構成を作成してください。
TeamCity が NuGet サーバーとして構成されていることを確認してください。 で NuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているか確認します。 該当するテーブルがない場合は、 ツールをインストール ... ボタンをクリックして NuGet を TeamCity に追加し、必要な手順に従ってください。

ソリューションによって参照される NuGet パッケージを復元するビルドステップを追加します。 ランナータイプ として NuGet インストーラー を使用してください。

最初のビルドステップを追加し、ソリューションとテストをビルドしてください。 この例では、 .NET ランナーを使用します(ビルドエージェントに ソフトウェアのインストールが必要です)が、ビルド方法には他にも MSBuild の直接実行やバッチファイルの実行などさまざまなオプションがあります。

ここでやっているのは解決策を構築することだけです。 カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。
ランナータイプ の MSpec を選択してください。
プロジェクトのターゲットとなる .NET フレームワークバージョンに対応するランナーバージョンを使用していることを確認してください。
%system.teamcity.build.workingDir%\SimpleTestsProject\packages\Machine.Specifications.Runner.Console.0.9.3\tools\mspec-clr4.exeプロジェクトのターゲットとする .NET Framework バージョンに対応したランナーのバージョンを使用していることを確認してください。
からテストを実行する では、コンパイルされたテストアセンブリへのパスを指定します。
必要に応じて、 仕様を含める および 仕様を除外する に含める / 除外する仕様を指定します。

カバレッジを設定するときです。 .NET カバレッジツール では、 JetBrains dotCover を選択します。

アセンブリフィルター では、カバレッジ対象のアセンブリ(アセンブリ名のみ)を
+:の接頭辞として追加し、–:でカバレッジしたくないアセンブリを除外します。 この例では、実行中のテストと MSpec アセンブリに関連するすべてを含むMSpecTestsアセンブリを除外しています。設定を保存して実行し、動作の仕方を確認します。
ビルドが完了すると、 概要 タブにテスト結果とコードカバレッジに関する短いレポートが表示されます。

詳細を表示するには、 コードカバレッジ タブに切り替えます。 ここでは、テストでカバーされたクラス / メソッドの量に関する詳細な統計を表示できます。

あるいは、個々のクラスにドリルダウンしてコードカバレッジを調べることもできます。

ビルドアーティファクトには、カバレッジファイルが含まれています。