dotCover 2020.2ヘルプ

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

通常、.NETソリューションの継続的インテグレーション(CI)ビルドは、テストのコンパイルと実行を含む一連のタスクで構成されています。JetBrains TeamCity CIサーバーの観点から、これらのタスクはビルドステップと呼ばれます。TeamCityにはdotCover Console Runnerがバンドルされているため、対応するビルドステップオプションを有効にするだけでコードカバレッジデータを収集できます。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
    ビルド成果物には、カバレッジファイルが含まれています。

最終更新日: 2020年7月14日