dotCover 2024.1 ヘルプ

JetBrains TeamCity でカバレッジを設定する

通常、.NET ソリューションの継続的インテグレーション (CI) ビルドは、テストのコンパイルと実行を含む一連のタスクで構成されます。JetBrains TeamCity CI サーバーの観点では、これらのタスクはビルドステップと呼ばれます。TeamCity は dotCover コマンドラインツールにバンドルされているため、対応するビルドステップオプションを有効にするだけでコードカバレッジデータを収集できます。TeamCity が収集したカバレッジ結果は、TeamCity 内でレポートとして表示したり、カバレッジスナップショットとしてダウンロードして Visual Studio 内で表示したりできます。

例: アプリケーションとテストアセンブリの 2 つのプロジェクトからなるシンプルなソリューションがあります。私たちの作業は、アプリケーションをコンパイルし、テストを実行し、テストカバレッジ統計を収集する継続的な統合ビルドを設定することです。ワークフローは、使用している単体テストランナーによって異なります。

MSTest/NUnit

MSTest と NUnit のテストランナーは、TeamCity からすぐに提供されるため、一般的に必要なのは、対応するランナーを使用してビルドステップを追加することだけです。

TeamCity で MSTest/NUnit テストのカバレッジ分析を設定する

  1. TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)新しいビルド構成(英語)作成します(英語)

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

    TeamCity build step

    ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。

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

    TeamCity build step: run tests
  4. カバレッジを設定するときです。.NET カバレッジツールでは、JetBrains dotCover を選択します。

    TeamCity build step: coverage
  5. アセンブリフィルターでは、カバレッジ対象のアセンブリ(アセンブリ名のみ)を +: の接頭辞として追加し、 –: でカバレッジしたくないアセンブリを除外します。この例では、実行中のテストを含む MainTests アセンブリを除外しています。

  6. 設定を保存して実行し、動作の仕方を確認します。

  7. ビルドが完了すると、概要タブにコードカバレッジに関する短いレポートが表示されます。

    TeamCity run overview

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

    TeamCity code coverage report

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

    TeamCity. Code coverage shown on source code

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

    TeamCity. Artifacts
  8. 実際の環境では、バイナリをビルドするものとコードカバレッジを収集するものの 2 つの異なるビルド構成がある場合があることに注意してください。その場合、2 番目のビルド構成がソースファイルを見つけることができるように、スナップショットの依存関係を使用する必要があります。そうしないと、ソースコードを表示しようとしたときに Source code is not available メッセージが表示されます。

    TeamCity. No source code

    この問題を解決するには、TeamCity のドキュメントの指示に従ってください。

xUnit

xUnit テストの実行と取得の主な問題は、xUnit が TeamCity によってすぐにサポートされていないことです。これにより、解決しなければならない 2 つの問題が生じます。

  1. ソリューションを構築するには、xUnit パッケージを提供する必要があります。

    バイナリライブラリを VCS にコミットすることは良い習慣ではないため、パッケージの復元は、コンパイル段階の前に別のビルドステップである必要があります。

  2. xUnit テストランナーを提供し、手動で実行する必要があります。

    良いニュース:

    • ランナーは NuGet パッケージとして配布されるため、ソリューションの中ですぐに参照され、ビルド中にリストアされます(a を参照)。

    • ランナーが TeamCity サービスメッセージの形式で結果を提供するため、テスト結果を得るために必要な追加のアクションはありません。

TeamCity で xUnit テストのカバレッジ分析を設定する

  1. Visual Studio で、ソリューションを開きます。テストプロジェクトでは、xunit.runner.console NuGet パッケージへの参照を追加します。

    Installing XUnit console runner
  2. TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)新しいビルド構成(英語)作成します(英語)

  3. TeamCity が NuGet サーバーとして構成されていることを確認します。管理 | ツールNuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているかどうかを確認します。そのようなテーブルがない場合は、ツールをインストール ... ボタンをクリックし、必要な手順に従って NuGet を TeamCity に追加します。

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

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

    TeamCity build step

    ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。

  6. テストを実行するビルドステップを追加します。

    • xUnit ランナーは単純な .exe ファイルとして実行されるため、.NET ランナーを選択します。

    • コマンド<カスタム> を選択します。

    • ランナーはソリューション内のパッケージとして提供されるため、ソリューションの作業ディレクトリを基準にしたパスを指定できます。例:

      %system.teamcity.build.workingDir%\SimpleTestsProject\packages\xunit.runner.console.2.3.1\tools\net452\xunit.console.exe
    • コマンドラインパラメーターフィールドには、コンパイルされたテストアセンブリへのパスが含まれている必要があります。

    TeamCity build steps. Run and cover
  7. カバレッジを設定するときです。.NET カバレッジツールでは、JetBrains dotCover を選択します。

    TeamCity. XUnit coverage step
  8. アセンブリフィルターでは、カバレッジ対象のアセンブリ(アセンブリ名のみ)を +: の接頭辞として追加し、 –: でカバレッジしたくないアセンブリを除外します。この例では、実行中のテストと xUnit アセンブリに関連するすべてを含む MainTests アセンブリを除外します。

  9. 設定を保存して実行し、動作の仕方を確認します。

  10. ビルドが完了すると、概要タブにテスト結果とコードカバレッジに関する短いレポートが表示されます。

    TeamCity. XUnit run overview

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

    TeamCity. XUnit coverage statistics

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

    TeamCity. Code coverage shown on source code

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

MSpec

MSpec は TeamCity の一部でサポートされています。対応するビルドステップランナーがありますが、MSpec テストランナーはバンドルになく、TeamCity エージェントに手動でインストールする必要があります。幸いにも、ランナーは NuGet パッケージとして配布されるため、ソリューション内ですぐに参照され、ビルド中に復元されます。

TeamCity で MSpec テストのカバレッジ分析を設定する

  1. Visual Studio でソリューションを開きます。テストプロジェクトで、Machine.Specifications.Runner.Console NuGet パッケージへの参照を追加します。

    Installing MSpec via NuGet
  2. TeamCity で、新しいビルドプロジェクト(英語)を作成し、VCS ルートをセットアップします。次に、新しいビルドステップを追加します。プロジェクト内に新しいプロジェクト(英語)新しいビルド構成(英語)作成します(英語)

  3. TeamCity が NuGet サーバーとして構成されていることを確認します。管理 | ツールNuGet.exe テーブルを見つけ、必要な NuGet バージョンが含まれているかどうかを確認します。そのようなテーブルがない場合は、ツールをインストール ... ボタンをクリックし、必要な手順に従って NuGet を TeamCity に追加します。

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

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

    TeamCity build step

    ここでやっているのは解決策を構築することだけです。カバレッジ設定はまだありません。

  6. テストを実行するビルドステップを追加します。

    • ランナータイプMSpec を選択してください。

    • ランナーはソリューション内のパッケージとして提供されるため、ソリューションの作業ディレクトリを基準にしたパスを指定できます。例:

      %system.teamcity.build.workingDir%\SimpleTestsProject\packages\Machine.Specifications.Runner.Console.0.9.3\tools\mspec-clr4.exe

      プロジェクトのターゲットとなる .NET フレームワークバージョンに対応するランナーバージョンを使用していることを確認してください。

    • からテストを実行するでは、コンパイルされたテストアセンブリへのパスを指定します。

    • 必要に応じて、仕様を含めるおよび仕様を除外するに含める / 除外する仕様を指定します。

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

    TeamCity. MSpec coverage step
  8. アセンブリフィルターでは、カバレッジ対象のアセンブリ(アセンブリ名のみ)を +: の接頭辞として追加し、 –: でカバレッジしたくないアセンブリを除外します。この例では、実行中のテストと MSpec アセンブリに関連するすべてを含む MSpecTests アセンブリを除外しています。

  9. 設定を保存して実行し、動作の仕方を確認します。

  10. ビルドが完了すると、概要タブにテスト結果とコードカバレッジに関する短いレポートが表示されます。

    TeamCity. MSpec tests run overview

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

    TeamCity. MSpec tests coverage statistics

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

    TeamCity. MSpec tests coverage shown on source code

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

関連ページ:

コマンドラインからのカバレッジ分析

dotCover コマンドラインツールを使用すると、次のことが可能になります。任意のテストランナー (MSTest、NUnit、xUnit、MSpec など) の実行を制御し、実行されたテストのカバレッジをカバレッジスナップショットに記録します。たとえば、さまざまなテストフレームワークを使用する単体テストのスナップショットを結合するには、merge コマンドを使用してカバレッジスナップショットをマージします。report コマンドを使用して、さまざまな形式でカバレッジレポートを生成します。さらに、こ...

カバレッジスナップショットとは

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...