JetBrains TeamCity でカバレッジを設定する
通常、.NET ソリューションの継続的インテグレーション (CI) ビルドは、テストのコンパイルと実行を含む一連のタスクで構成されます。JetBrains TeamCity CI サーバーの観点では、これらのタスクはビルドステップと呼ばれます。TeamCity は dotCover コマンドラインツールにバンドルされているため、対応するビルドステップオプションを有効にするだけでコードカバレッジデータを収集できます。TeamCity が収集したカバレッジ結果は、TeamCity 内でレポートとして表示したり、カバレッジスナップショットとしてダウンロードして Visual Studio 内で表示したりできます。
例: アプリケーションとテストアセンブリの 2 つのプロジェクトからなるシンプルなソリューションがあります。私たちの作業は、アプリケーションをコンパイルし、テストを実行し、テストカバレッジ統計を収集する継続的な統合ビルドを設定することです。ワークフローは、使用している単体テストランナーによって異なります。
MSTest/NUnit
MSTest と NUnit のテストランナーは、TeamCity からすぐに提供されるため、一般的に必要なのは、対応するランナーを使用してビルドステップを追加することだけです。
TeamCity で MSTest/NUnit テストのカバレッジ分析を設定する
TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)と新しいビルド構成(英語)を作成します(英語)。
Add a first build step, that will build the solution and tests. In our particular example, we use the .NET runner (requires the following software to be installed on a build agent), but you have a number of other options on how to build: directly run MSBuild, run batch file, and so on.
ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。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.console
NuGet パッケージへの参照を追加します。TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)と新しいビルド構成(英語)を作成します(英語)。
TeamCity が NuGet サーバーとして構成されていることを確認します。NuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているかどうかを確認します。そのようなテーブルがない場合は、ツールをインストール ... ボタンをクリックし、必要な手順に従って NuGet を TeamCity に追加します。
でソリューションによって参照される NuGet パッケージを復元するビルドステップを追加します。ランナータイプとして NuGet インストーラーを使用してください。
Add a first build step, that will build the solution and tests. In our particular example, we use the .NET runner (requires the following software to be installed on a build agent), but you have a number of other options on how to build: directly run MSBuild, run batch file, and so on.
ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。
xUnit ランナーは単純な .exe ファイルとして実行されるため、.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.Console
NuGet パッケージへの参照を追加します。TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)と新しいビルド構成(英語)を作成します(英語)。
TeamCity が NuGet サーバーとして構成されていることを確認します。NuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているかどうかを確認します。そのようなテーブルがない場合は、ツールをインストール ... ボタンをクリックし、必要な手順に従って NuGet を TeamCity に追加します。
でソリューションによって参照される NuGet パッケージを復元するビルドステップを追加します。ランナータイプとして NuGet インストーラーを使用してください。
Add a first build step, that will build the solution and tests. In our particular example, we use the .NET runner (requires the following software to be installed on a build agent), but you have a number of other options on how to build: directly run MSBuild, run batch file, and so on.
ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。
テストを実行するビルドステップを追加します。
ランナータイプの MSpec を選択してください。
ランナーはソリューション内のパッケージとして提供されるため、ソリューションの作業ディレクトリを基準にしたパスを指定できます。例:
%system.teamcity.build.workingDir%\SimpleTestsProject\packages\Machine.Specifications.Runner.Console.0.9.3\tools\mspec-clr4.exeプロジェクトのターゲットとなる .NET フレームワークバージョンに対応するランナーバージョンを使用していることを確認してください。
からテストを実行するでは、コンパイルされたテストアセンブリへのパスを指定します。
必要に応じて、仕様を含めるおよび仕様を除外するに含める / 除外する仕様を指定します。
カバレッジを設定するときです。.NET カバレッジツールでは、JetBrains dotCover を選択します。
アセンブリフィルターでは、カバレッジ対象のアセンブリ(アセンブリ名のみ)を
+:
の接頭辞として追加し、–:
でカバレッジしたくないアセンブリを除外します。この例では、実行中のテストと MSpec アセンブリに関連するすべてを含むMSpecTests
アセンブリを除外しています。設定を保存して実行し、動作の仕方を確認します。
ビルドが完了すると、概要タブにテスト結果とコードカバレッジに関する短いレポートが表示されます。
詳細を表示するには、コードカバレッジタブに切り替えます。ここでは、テストでカバーされたクラス / メソッドの量に関する詳細な統計を表示できます。
あるいは、個々のクラスにドリルダウンしてコードカバレッジを調べることもできます。
ビルドアーティファクトには、カバレッジファイルが含まれています。
関連ページ:
コマンドラインからのカバレッジ分析
dotCover コマンドラインツールを使用すると、次のことが可能になります。任意のテストランナー(MSTest、NUnit、xUnit、MSpec など)を使用してカバレッジ分析を実行し、実行されたテストのカバレッジをカバレッジスナップショットに記録します。マージコマンドを使用してカバレッジスナップショットをマージします。たとえば、異なるテストフレームワークを使用するユニットテストのスナップショットを結合します。レポートコマンドを使用して、さまざまな形式でカバレッジレポートを生成します。さらに...
カバレッジスナップショットとは
dotCover は、カバレッジスナップショットにカバレッジ分析データを記録して格納します。カバレッジスナップショットは、カバレッジ実行に関与し、テスト実行中にソースコードまたは PDB ファイルを使用できるすべてのアセンブリのコードカバレッジ統計を含むデータユニットです。カバレッジスナップショットは、*.dcvr 拡張子の付いたファイルに保存され、後で Visual Studio(dotCover がインストールされている場合)または dotCover スタンドアロンアプリケーションで開くことがで...
.NET
TeamCity には、.NET ビルドステップ、ビルドエージェントでの .NET 検出、リポジトリ内のビルドステップの自動検出を提供する .NET ツールチェーンの組み込みサポートが付属しています。このページでは、.NET ランナーの設定について詳しく説明します。チュートリアルとデモについては、このブログ投稿シリーズを参照してください。要件:.NET ランナーを使用するには、ビルドエージェントマシンに次のソフトウェアをインストールする必要があります。.NET CLI コマンド (クロスプラットフ...
JetBrains dotCover
TeamCity は JetBrains dotCover のコンソールランナーにバンドルされています。バンドル版に加えて、JetBrains dotCover コマンドラインツールの別のバージョンをインストールしたり、管理 | ツールページを使用してデフォルトを変更したりできます。ビルドステップの .NET カバレッジセクションで適切なオプションを選択すると、.NET プロジェクトのコードカバレッジを収集し、TeamCityWebUI 内のカバレッジ統計と詳細なカバレッジレポートを表示できます。do...