dotCover 2020.2 ヘルプ

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. アプリケーションをビルドする最初のビルドステップを追加します。この例では、Visual Studio (sln) ランナーを使用しています(Visual Studio をビルドエージェントにインストールする必要があります)が、ビルド方法には他にも多くのオプションがあります。MSBuild を直接実行する、バッチファイルを実行するなどです。

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

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

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

    TeamCity build step: coverage

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

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

    TeamCity configuration running

  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 つの課題が生じます。

  • ソリューションを構築するには、xUnit パッケージを提供する必要があります。
    バイナリライブラリを VCS にコミットすることはお勧めできません。そのため、パッケージの復元は、コンパイル段階の前に別のビルドステップにする必要があります。

  • xUnit テストランナーを提供し、手動で実行する必要があります。
    良いニュース:

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

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

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

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

    Installint 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. アプリケーションをビルドするビルドステップを追加します。この例では、Visual Studio (sln) ランナーを使用しています(Visual Studio をビルドエージェントにインストールする必要があります)が、ビルド方法には他にも多くのオプションがあります。MSBuild を直接実行する、バッチファイルを実行するなどです。

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

  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. XUnit coverage shown on source code
    ビルド成果物には、カバレッジファイルが含まれています。

MSpec

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

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

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

    Intalling 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. アプリケーションをビルドするビルドステップを追加します。この例では、Visual Studio (sln) ランナーを使用しています(Visual Studio をビルドエージェントにインストールする必要があります)が、ビルド方法には他にも多くのオプションがあります。MSBuild を直接実行する、バッチファイルを実行するなどです。

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

  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
    ビルド成果物には、カバレッジファイルが含まれています。

最終更新日 :