TeamCity での NUnit サポート
TeamCity でレポートする NUnit テストをセットアップするには、2 つの最も一般的な方法があります。
さらに、TeamCity VSTest アダプター(英語)を使用して、別のアプローチを試したり、他のランナー(PowerShell やコマンドラインなど)でテストを実行したりできます。
この記事では、TeamCity での NUnit サポートの詳細と、それを確立するための代替アプローチについて説明します。
サポートされている NUnit バージョン
次の NUnit バージョンがサポートされています: 2.2.10、2.4.1、2.4.6、2.4.7、2.4.8、2.5.0、2.5.2、2.5.3、2.5.4、2.5.5、2.5.6、2.5.7、2.5.8、2.5.9、2.5.10、2.6.0、2.6.1、2.6.2、2.6.3、3.0。
エージェントマシンに NUnit のいくつかのバージョンをインストールしておき、ビルドに使用することは可能です。
NUnit フレームワークの互換性
次の表は、TeamCity ランナーと .NET 実装との互換性を表しています。
.NET フレームワーク 1、1.1、2、3.5 | .NET フレームワーク 4+ | .NET Core1 以降および .NET5 以降 | |
|---|---|---|---|
NUnit ランナー
| | | |
.NET ランナー
| | | |
他のランナーの VSTest アダプター | | | |
代替アプローチ
NUnit または .NET ビルドランナーの使用が適用できない場合、TeamCity は、TeamCity でレポートする NUnit テストを構成するための次の方法を提供します。
MSBuild ビルドスクリプトで構成するか、コマンドラインから起動できる NUnit テストランチャー。
NUnit 用の TeamCity アドインは、ビルド手順を変更せずに NUnit レベルでレポートを有効にするために使用できます。
バンドルされている XML テスト報告プラグインを使用すると、任意の XML レポートを TeamCity にインポートできます。この場合、結果をその場で追跡できないことがあります。
XML レポート処理ビルド機能をビルド構成に追加するか、次のサービスメッセージを使用します。##teamcity[importData type='sometype' path='<path to the xml file>']詳細: XML レポート処理 , XML レポートのインポート。サービスメッセージを介して手動でテストレポートを構成します。
代替アプローチの機能比較
アプローチ | リアルタイムレポート | CLI ベースのランナーでの実行 | 並べ替えのテスト | 暗黙の TeamCity .NET カバレッジ |
|---|---|---|---|---|
\<nunit2\> NAnt タスク | | | | |
\<NUnit\> MSBuild タスク | | | | |
\<NUnitTeamCity\> MSBuild タスク | | | | |
NUnit 用の TeamCity アドイン | | | | |
TeamCity NUnit テストランチャー | | | | |
XML レポーティングプラグイン | | | なし | なし |
* TeamCity 提供のタスクは、構文 / 動作が異なる場合があります。TeamCity なしでスクリプトを実行するには、いくつかの回避策が必要になる場合があります。
TeamCity では、一般的なテストレポート機能に加えて、プラットフォームとランタイム環境のバージョンの明示的な仕様を導入することにより、x64 マシン上の x86 プロセスで NUnit テストを実行できます。MSIL、x64 または x86 プラットフォームで開始された .NET フレームワーク 1.1, 2.0, 4.0 を使用するかどうかを定義できます。
NUnit テストランチャー
TeamCity は、コマンドラインから使用できる独自の NUnit テストランチャーを提供します。テストは渡されたパラメーターに従って実行され、プロセスが TeamCity ビルドエージェント環境内で実行される場合、結果は TeamCity エージェントに報告されます。
次のコマンドラインオプションを TeamCity NUnit テストランチャーに渡すことができます。
オプション | 説明 |
|---|---|
| テストを実行する .NET フレームワークのバージョン。許容値は v1.1、v2.0、v4.0、ANY です。 |
| テストを実行するプラットフォーム。許容値は x86、x64、MSIL です。 .NET フレームワーク 1.1 の場合、MSIL オプションのみが使用可能です。 |
| 使用するテストフレームワーク。値は、 |
| |
| |
| 使用するサードパーティの NUnit アドインのリスト(オプション)。 |
| |
| 新しいプロセスで各アセンブリを実行するように指定します。 |
カテゴリ表現
NUnit 2.4.6 から NUnit v3.0 まで (ただし NUnit v3.0 は含みません)、カテゴリ式を使用できます。次の表にいくつかの例を示します。
式 | アクション |
|---|---|
A|B|C | カテゴリ A、B、または C のいずれかを持つテストを選択します。 |
A,B,C | カテゴリ A、B、または C のいずれかを持つテストを選択します。 |
A+B+C | 3 つのカテゴリすべてが割り当てられているテストのみを選択します。 |
A+B|C | A と B の両方、またはカテゴリ C のテストを選択します。 |
A+B\-C | A と B の両方でテストを選択しますが、C は選択しません。 |
-A | カテゴリ A が割り当てられていないテストを選択します。 |
A+(B|C) | カテゴリ A と B または C の両方を持つテストを選択します。 |
A+B,C | カテゴリ A と B または C の両方を持つテストを選択します。 |
メモ : 最後の 2 つの例で示されているように、コンマ演算子 (,) はパイプ (|) と同等ですが、優先順位が高くなります。評価の順序は次のとおりです。
単項除外演算子(
-)。優先順位の高いユニオン演算子(
,)。交差および集合減算演算子(
+およびバイナリ-)。優先順位の低いユニオン演算子(
|)。
演算子文字には特別な意味があるため、名前に演算子文字のいずれかを使用するカテゴリを作成しないでください。例: カテゴリ db-tests は、" カテゴリテストを除いてカテゴリ db を実行する " という意味になるため、コマンドラインで使用しないでください。使用しているシェルに対して特別な意味を持つ文字にも同じ制限が適用されます。
次の例では、teamcity.dotnet.nunitlauncher プロパティがビルド設定のパラメーターページでシステムプロパティとして設定されていることを前提としています。
アセンブリからテストを実行します。
NUnit カテゴリフィルターを使用してアセンブリからテストを実行します。
アセンブリからテストを実行します。
NAnt Build Runner 用の NUnit
このセクションでは、nunit2 タスクが構成された NAnt ビルドスクリプトがすでにあり、既存のビルドスクリプトに変更を加えずに TeamCity がテストレポートを追跡することを前提としています。それ以外の場合は、ビルド構成の手順の 1 つとして NUnit ビルドランナーを追加することを検討してください。
標準の nunt2 タスクを介して NAnt ビルドで定義されたテストを追跡するために、TeamCity はカスタムタスク(英語)の実装を提供し、元の <nunit2> タスクを独自のタスクに自動的に置き換えます。ビルドがトリガーされると、TeamCity は <nunit2> の独自の実装を使用して TeamCity NUnit テストランチャーを起動します。これにより、ビルドスクリプトを変更せずにそのままにして、TeamCity でオンザフライのテストレポートを受け取ることができます。
TeamCity で元の nunit2 タスクを置き換えたくない場合は、次のオプションを検討してください。
NUnit 用の TeamCity アドインを備えた NUnit コンソールを使用します。
XML テストレポートプラグインを介して XML テスト結果をインポートします。
コマンドライン NUnit テストランチャーを使用します。
サービスメッセージを介してレポートテストを手動で構成します。
nunit2タスクの置換を使用不可にするには、teamcity.dotnet.nant.replaceTasksシステムプロパティをfalseに設定します。
TeamCity の nunt2 タスク実装は、ビルドスクリプト内の NAnt <property> タスクとして、またはビルド構成 | ビルドパラメーターのシステムプロパティとして指定できる追加オプションをサポートします。
TeamCity <nunit2> タスクの実装では、次のオプションがサポートされています。
プロパティ | 説明 |
|---|---|
| 失敗したテストの数に関係なく、すべてのテストを実行します。少なくとも 1 つのテストが失敗した場合は失敗します。 |
| x64 マシン上の .NET 2.0 に必要なランタイム実行モードを設定します。サポートされる値は x86、x64、ANY(デフォルト)です。 |
| 必要な .NET フレームワークバージョンを設定します。サポートされている値は、v1.1、v2.0、v4.0 です。デフォルト値は、NAnt ターゲットフレームワークと同じです。 |
| 使用する NUnit ランナーのバージョンを指定します。値は次の形式で指定する必要があります: エージェントマシンに NUnit のいくつかのバージョンをインストールしておき、ビルドに使用することは可能です。 |
| NAnt ビルドランナーに使用されるサードパーティの NUnit アドインのリストを指定します。 |
| 新しいプロセスで各アセンブリを実行する場合は、 |
TeamCity NUnit テストランチャーは、NAnt ターゲットフレームワークによって指定された .NET フレームワーク、つまり .NET フレームワーク 1.1, 2.0, 4.0 ランタイムでテストを実行します。TeamCity は、<nunit2> タスクのテストカテゴリもサポートしています。
リストされたプロパティを NAnt ビルドスクリプトに追加すると、TeamCity に依存します。これを回避するには、ビルド構成でシステムプロパティとしてプロパティを指定するか、<if> タスクを追加することを検討してください。
サンプル
開始テストは、.NET 2.0 の x64 モードで単一のアセンブリファイルを形成します。
C2 ではなく、カテゴリ C1 からすべてのテストを実行します。
テストを実行する NUnit のバージョンを明示的に指定します。
この場合、nunit2 タスク呼び出しの前に次のプロパティを追加する必要があることに注意してください。
MSBuild に NUnit を使用する
このセクションでは、MSBuild から NUnit を使用する方法について説明します。
MSBuild ビルドでの NUnit タスクの使用
このセクションでは、NUnit タスクが構成された MSBuild ビルドスクリプトがすでに存在し、既存のビルドスクリプトに変更を加えずに TeamCity でテストレポートを追跡することを想定しています。それ以外の場合は、ビルド構成のステップの 1 つとして NUnit ビルドランナーを追加することを検討してください。
MSBuild ビルドスクリプトで NUnitTeamCity タスクを使用する
TeamCity は、MSBuild コミュニティタスク(英語)プロジェクトの NUnit タスクと互換性のあるカスタム NUnitTeamCity タスクを提供します。ビルドスクリプトで NUnitTeamCity タスクを提供すると、TeamCity はタスク内で指定されたオプションに基づいて独自のテストランナーを起動します。TeamCity がテストを実行するため、NUnit ランナーは必要ありません。
NUnitTeamCity タスクを正しく使用するには:
teamcity_dotnet_nunitlauncherシステムプロパティがビルドエージェントでアクセス可能であることを確認してください。Windows を実行しているビルドエージェントは、これらのプロパティを環境変数として自動的に検出します。手動で設定する必要がある場合は、詳細については「agent-specific プロパティの定義」を参照してください。次の構文を使用して、
NUnitTeamCityタスクで MSBuild ビルドスクリプトを構成します。<UsingTask TaskName="NUnitTeamCity" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" /> <NUnitTeamCity Assemblies="@(assemblies_to_test)" />
NUnitTeamCity タスクは、次の属性をサポートしています。
プロパティ | 説明 |
|---|---|
| x64 マシンの実行モード。サポートされる値は、x86、x64、ANY です。 |
| 使用する .NET フレームワーク: v1.1、v2.0、v4.0、ANY。デフォルトでは、MSBuild ランタイムが使用されます。MSBuild 2.0 および 3.5 の場合、デフォルトは v2.0 です。MSBuild 4.0 の場合、デフォルト値は v4.0 です。 |
| MSBuild コミュニティタスク(英語)プロジェクトの |
| MSBuild コミュニティタスク(英語)プロジェクトの |
| テストの実行に使用される NUnit のバージョン。 NUnit 3.0 以降を使用する場合は、以下のセクションを参照してください。 |
| 使用するサードパーティの NUnit アドインのリスト。NUnit アドインの使用の詳細については、NUnit アドインのサポートセクションを参照してください。 |
| いずれかのテストが失敗した場合にタスクを失敗させる場合は True です。 |
| テストを実行するアセンブリのリスト。 |
| 各アセンブリを新しいプロセスで実行する場合は、 |
カスタム TeamCity NUnit タスクは追加の属性もサポートします。使用可能な属性のリストについては、このセクションを参照してください。
サードパーティの NUnit アドインをサポートするために TeamCity テストランナーが必要な場合は、詳細について NUnit アドインのサポートセクションを参照してください。
例(MSBuild ビルドスクリプトの一部):
注意事項
MSBuild スクリプトでシステムプロパティを使用する場合は、必ず
.を_に置き換えてください。例:teamcity.dotnet.nunitlauncher.msbuild.taskの代わりにteamcity_dotnet_nunitlauncher_msbuild_taskを使用します。TeamCity は、Microsoft Visual Studio 2005 以降のソリューションファイル用の Visual Studio ソリューションランナーも提供します。これにより、アセンブリで単体テストを実行する際に MSBuild スタイルのワイルドカードを使用できます。
サンプル
特定の NUnit ランナーバージョンを使用して NUnit テストを実行します。
NUnit 2.4.6 を使用してカスタムアドインを使用して NUnit テストを実行します。
NUnit 2.4.6 アセンブリごとのモードを使用して、カスタムアドインを使用して NUnit テストを実行します。
TeamCity に依存しないビルドスクリプトを作成するには、次のオプションを検討してください。
TeamCity から開始すると、MSBuild プロパティ TEAMCITY_VERSION が MSBuild に追加されます。
NUnit 3.0 での作業
バージョン 3.0 以降、NUnit は TeamCity をネイティブにサポートしているため、以前の NUnit バージョンのように MSBuild 用の特別なタスクを使用する必要はありません。最も簡単な方法は、標準の実行タスク(英語)を介して NUnit コンソールを実行することです。
NUnit を使ってみるの記事には、詳細と例が含まれています。
MSBuild サービスタスク
MSBuild の場合、TeamCity はスクリプトインタラクションの構築と同じオプションを実装する次のサービスタスクを提供します。
TeamCitySetBuildNumber では、ビルド番号を変更できます。
{build.number} を古いビルド番号のプレースホルダーとして使用できます。
TeamCityProgressMessage では、進行状況メッセージを書き込むことができます。
TeamCityPublishArtifacts では、MSBuild アイテムグループのすべてのアーティファクトを公開できます。
TeamCityReportStatsValue は、統計値を公開するための便利なタスクです。
TeamCityBuildProblem は、実際にビルドに失敗するビルドの問題を報告します。ビルドの問題はビルド結果ページに表示され、ビルドステータステキストにも影響します。
必須の
description属性は、ビルドの問題を説明する人間が読めるテキストです。デフォルトでは、descriptionはビルドステータステキストに表示されます。identityはオプションの属性であり、特定のビルド問題インスタンスを特徴付けます。同じ問題が発生した場合(たとえば、同じコンパイルエラー)、ビルド全体で変更されるべきではありません。最大 60 文字の有効な JavaID である必要があります。デフォルトでは、identityはdescriptionに基づいて計算されます。
TeamCitySetStatus は、現在のビルドステータステキストを変更するタスクです。
{build.status.text は、古いステータステキストに置き換えられます。ステータスには SUCCESS 値を指定できます。
NUnit アドインのサポート
NUnit アドインは、NUnit コアにプラグインし、動作方法を変更する拡張機能です。詳細については、NUnit アドインページ(英語)を参照してください。このセクションでは、NAnt、MSBuild、NUnit ConsoleLauncher の NUnit アドインサポートについて説明します。
NAnt ビルドランナーでのアドインの使用
NAnt ビルドランナーで NUnit アドインをサポートするには、ビルドスクリプトに teamcity.dotnet.nant.nunit2.addins プロパティを追加する必要があります。
ここで、<list> は、; で区切られた NUnit アドインへのパスのリストです。
例:
TeamCity NUnit コンソールランチャーでのアドインの使用
コンソールランチャーの NUnit アドインをサポートするには、/addins:<list of addins separated with ;> コマンドラインオプションを提供する必要があります。
例:
MSBuild でのアドインの使用
このセクションは 3.0 より前の NUnit バージョンに適用可能です。
MSBuild ランナーの NUnit アドインをサポートするには、NUnitTeamCity タスクの Addins プロパティを指定します。
ここで、<list> は、; または , で区切られたアドインのリストです。
例:
NUnit 用の TeamCity アドイン
TeamCity NUnit アドインはバージョン 3.0 より前の NUnit をサポートします。それ以降のバージョンについては、このセクションを参照してください。
NUnit コンソール(英語)を介して NUnit テストを実行し、TeamCity テストランナーを起動せずに TeamCity でテスト結果を追跡する場合、最善の解決策は NUnit 用の TeamCity アドインを使用することです。このアドインを NUnit にプラグインすると、テストが TeamCity サーバーに自動的に報告されます。
または、XML レポート処理ビルド機能を使用するか、サービスメッセージを使用してテストレポートを手動で構成するかを選択できます。
TeamCity でテスト結果を確認できるようにするには:
ビルドでは、TeamCity アドインへのパスをシステムプロパティ
teamcity.dotnet.nunitaddin(MSBuild の場合はteamcity_dotnet_nunitaddin) に設定し、このパスの末尾に NUnit のバージョンを追加します。例:NUnit 2.4.X の場合は
${teamcity.dotnet.nunitaddin}-2.4.X.dll(MSBuild 用)を使用してください:$(teamcity_dotnet_nunitaddin)-2.4.X.dll)。
NUnit 2.4.7 の例:NAnt: ${teamcity.dotnet.nunitaddin}-2.4.7.dll, MSBuild:$(teamcity_dotnet_nunitaddin)-2.4.7.dll.NUnit 2.5.0 alpha 4 の場合は、
${teamcity.dotnet.nunitaddin}-2.5.0.dll(MSBuild の場合は$(teamcity_dotnet_nunitaddin)-2.5.0.dll) を使用します。
.dllおよび.pdbTeamCity アドインファイルを NUnit アドインディレクトリにコピーします。
これらのファイルを一度コピーすることもできますが、これらのファイルは TeamCity によって更新される可能性があるため、ビルドごとに TeamCity アドインファイルが NUnit アドインディレクトリにコピーされるようにビルドを構成することを強くお勧めします。
次の例は、NUnit 2.4.7 (MSBuild 上) の TeamCity アドインで NUnit コンソールランナーを使用する方法を示しています。
NUnit の環境変数を明示的に設定する必要がある場合は、%system.teamcity.dotnet.nunitaddin% の値参照を使用して環境変数を指定します。詳細については、この記事を参照してください。
NUnit 2.4.8 の問題
NUnit 2.4.8 には以下の既知の問題がある: NUnit 2.4.8 ランナーは、作成された AssemblyName オブジェクトに従ってアセンブリをロードしようとします。ただし、NUnit 2.4.8 の addins フォルダーはアプリケーションプローブパスに含まれていません。その結果、NUnit 2.4.8 はコンソールモードでアドインをロードできません。
この問題を解決するには、次のいずれかの回避策を使用することをお勧めします。
TeamCity アドインアセンブリを NUnit
binディレクトリとbin/addinsディレクトリの両方にコピーします。NUnit-Console.exe.configにパッチを適用して、アプリケーションプローブパスへのアドインを含めます。次のコードをconfig/runtime要素に追加します。<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="addins"/> </assemblyBinding>
関連ページ:
.NET
TeamCity.NET ビルドステップを使用すると、.NET (Core) および .NET フレームワークを対象とするアプリケーションをビルド、テスト、デプロイできるほか、NuGet パッケージをダウンロードしてプッシュすることもできます。.NET ステップイン構成とパイプライン:クラシックビルド構成では、.NET は、選択したコマンドに応じて設定が変化する単一のビルドステップです。パイプラインでは、これらの各コマンドは個別のビルドステップとして使用できます。エージェント要件:.NET ス...
NUnit
NUnit ビルドランナーは、TeamCity サーバーで NUnit テストを実行するように設計されています。ただし、.NET ランナーを使用して NUnit テストを起動し、TeamCity でテストレポートを表示することもできます。詳細については、TeamCity での NUnit サポートの記事を参照してください。レガシーおよび更新された NUnit ランナー:バージョン 2024.07 では、更新された NUnit ランナーが導入されました。従来のランナーと比較すると、.NET ランタイ...
コマンドライン (スクリプト)
コマンドライン(ビルド構成内)またはスクリプト(パイプライン内)は、TeamCity の中で最も柔軟なビルドステップです。エージェントマシン上で直接コマンドを実行するため、インストールされている任意のツール(cURL、Homebrew、Python、Unreal Engine など)との連携が可能になります。ツール固有の TeamCity ステップの代替として使用することもできます。たとえば、ゴールで Maven ステップを使用する代わりに、スクリプトを実行します。ステップ設定:スクリプトステップ...
サービスメッセージ
サービスメッセージは、ビルドに関するコマンド / 情報をビルドスクリプトから TeamCity サーバーに渡す特別に構成されたテキストです。TeamCity、それらはビルドの標準出力ストリームに書き込まれる必要があり、ビルドステップから出力またはエコーされますによって処理されます。例:echo ##teamcity[<messageName> 'value']echo
ビルドパラメーターの設定
パラメーターは、TeamCity 設定およびビルドスクリプトの構文を介して参照するペアです。パラメーター部分は、生の値 () にすることも、別のパラメーターへの参照 () を含めることもできます。パラメーター型:TeamCity は次の 3 種類のパラメーターをサポートします。構成パラメーター — ビルド構成内で設定を共有することを主な目的とするパラメーター。これらのパラメーターを使用して、テンプレートから作成された構成やレシピを使用する構成をカスタマイズすることもできます。TeamCity は...
プロジェクト管理者ガイド
このセクションでは、プロジェクト管理に焦点を当てます。TeamCity プロジェクトとビルド構成の作成、ビルドステップの設定、依存関係チェーンの構成などについて説明します。基本的な TeamCity ワークフロー:次のダイアグラムは、基本的な TeamCity ワークフローを示しています。TeamCity サーバーはリポジトリの変更を検出しました。サーバーはこの変更をデータベースに書き込みます。ビルド構成に添付されたトリガーは、データベース内の関連する変更を検出し、ビルドを開始します。トリガー...