TeamCity On-Premises 2026.2 Help

TeamCity での NUnit サポート

TeamCity で NUnit テストレポートを設定するには、一般的に次の 2 つの方法があります。

  • .NET ビルドランナーを使用します。

  • NUnit ビルドランナーを使用します。

また、代替アプローチを試したり、 TeamCity VSTest Adapter を使用して他のランナー (PowerShellCommand Line など) でテストを実行したりできます。

この記事では、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 ランナー

  • nunit-コンソール.exe

  • nunit3-console.exe

check.png

check.png

error.png

.NET ランナー

  • dotnest test

  • dotnet msbuild /t:VSTest

  • dotnet vstest

error.png

check.png

check.png

他のランナーの VSTest アダプター

error.png

check.png

check.png

代替アプローチ

NUnit または .NET ビルドランナーを使用できない場合、TeamCity では TeamCity で NUnit テストレポートを構成するための次の方法が用意されています。

代替アプローチの機能比較

アプローチ

リアルタイムレポート

CLI ベースのランナーでの実行

並べ替えのテスト

暗黙的な TeamCity .NET カバレッジ

\<nunit2\> NAnt タスク

check.png

check.png/error.png*

check.png

check.png

\<NUnit\> MSBuild タスク

check.png

check.png/error.png*

check.png

check.png

\<NUnitTeamCity\> MSBuild タスク

check.png

check.png/error.png*

check.png

check.png

NUnit 用 TeamCity アドイン

check.png

error.png

error.png

error.png

TeamCity NUnit テストランチャー

check.png

error.png

check.png

check.png

XML レポーティングプラグイン

error.png

check.png

なし

なし

* TeamCity 提供のタスクは、構文 / 動作が異なる場合があります。 TeamCity なしでスクリプトを実行するには、回避策が必要になる場合があります。

TeamCity では、一般的なテストレポート機能に加えて、プラットフォームとランタイム環境のバージョンを明示的に指定することで、x64 マシン上の x86 プロセスで NUnit テストを実行できます。 MSIL、x64 または x86 プラットフォームで開始された .NET フレームワーク 1.1, 2.0, 4.0 を使用するかどうかを定義できます。

NUnit テストランチャー

TeamCity は、コマンドラインから使用できる独自の NUnit テストランチャーを提供します。 テストは渡されたパラメーターに従って実行され、プロセスが TeamCity ビルドエージェント環境内で実行されている場合、結果は TeamCity エージェントに報告されます。

次のコマンドラインオプションを TeamCity NUnit テストランチャーに渡すことができます。

${teamcity.dotnet.nunitlauncher} <.NET Framework> <platform> <NUnit vers.> [/category-include:<list>] [/category-exclude:<list>] [/addin:<list>] <assemblies to test>

オプション

説明

<.NET Framework>

テストを実行する .NET フレームワークのバージョン。 許容値は バージョン 1.1v2.0v4.0任意 です。

<プラットフォーム>

テストを実行するプラットフォーム。 許容値は x86 アーキテクチャx64Microsoft 中間言語 です。

.NET フレームワーク 1.1 の場合、 Microsoft 中間言語 オプションのみが使用可能です。

<NUnit バージョン>

使用するテストフレームワーク。 値は次の形式で指定する必要があります: NUnit-<バージョン>

/category-include:<リスト>

で区切られたカテゴリのリスト(オプション)。

/category-exclude:<リスト>

で区切られたカテゴリのリスト(オプション)。

/addin:<リスト>

使用するサードパーティの NUnit アドインのリスト(オプション)。

<テストするアセンブリ>

; または空白で区切られたアセンブリパスのリスト。

/runAssemblies:processPerAssembly

新しいプロセスで各アセンブリを実行するように指定します。

カテゴリ式

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 つの例で示されているように、コンマ演算子 () はパイプ (または) と同等ですが、優先順位が高くなります。 評価の順序は次のとおりです。

  1. 単項除外演算子(-)。

  2. 優先順位の高いユニオン演算子()。

  3. 交差および集合減算演算子(プラス およびバイナリ -)。

  4. 優先順位の低いユニオン演算子(または)。

演算子文字には特別な意味があるため、名前に演算子文字のいずれかを使用するカテゴリを作成しないでください。 例: カテゴリ db-tests は、" カテゴリテストを除いてカテゴリ db を実行する " という意味になるため、コマンドラインで使用しないでください。 使用しているシェルに対して特別な意味を持つ文字にも同じ制限が適用されます。

次の例では、 teamcity.dotnet.nunitlauncher プロパティが ビルド構成設定パラメーター ページでシステムプロパティとして設定されていることを前提としています。

アセンブリからテストを実行します。

%\teamcity.dotnet.nunitlauncher% v2.0 x64 NUnit-2.2.10 Assembly.dll

NUnit カテゴリフィルターを使用してアセンブリからテストを実行します。

%\teamcity.dotnet.nunitlauncher% v2.0 x64 NUnit-2.2.10 /category-include:C1 /category-exclude:C2 Assembly.dll

アセンブリからテストを実行します。

%\teamcity.dotnet.nunitlauncher% v2.0 x64 NUnit-2.5.0 /addin:Addin1.dll;Addin2.dll Assembly.dll Assebly2.dll

NAnt ビルドランナー用 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 システムプロパティ に設定します。

TeamCity の nunt2 タスク実装は、ビルドスクリプト内の NAnt <プロパティ> タスクとして、または システムプロパティ として ビルド構成 | ビルドパラメーター 配下で指定できる追加オプションをサポートします。

TeamCity <nunit2> タスク実装では、次のオプションがサポートされています。

プロパティ

説明

teamcity.dotnet.nant.nunit2.failonfailureatend

失敗したテストの数に関係なく、 すべてのテスト を実行します。 少なくとも 1 つのテストが失敗した場合は失敗します。

teamcity.dotnet.nant.nunit2.platform

x64 マシン上の .NET 2.0 に必要なランタイム実行モードを設定します。 サポートされる値は x86 アーキテクチャx64任意 (デフォルト)です。

teamcity.dotnet.nant.nunit2.platformVersion

必要な .NET フレームワークバージョンを設定します。 サポートされている値は、 バージョン 1.1v2.0v4.0 です。 デフォルト値は、NAnt ターゲットフレームワークと同じです。

teamcity.dotnet.nant.nunit2.version

使用する NUnit ランナーのバージョンを指定します。 値は次の形式で指定する必要があります: NUnit-<バージョン>

エージェントマシンに NUnit のいくつかのバージョンをインストールしておき、ビルドに使用することは可能です。

teamcity.dotnet.nant.nunit2.addins

NAnt ビルドランナーに使用されるサードパーティの NUnit アドインのリストを指定します。

teamcity.dotnet.nant.nunit2.runProcessPerAssembly

新しいプロセスで各アセンブリを実行する場合は、 を設定します。

TeamCity NUnit テストランチャーは、NAnt ターゲットフレームワークによって指定された .NET Framework、つまり .NET Framework 1.1、2.0、4.0 ランタイムでテストを実行します。 TeamCity は <nunit2> タスクのテストカテゴリもサポートしています。

リストされたプロパティを NAnt ビルドスクリプトに追加すると、TeamCity に依存するようになります。 これを回避するには、 ビルド構成 でシステムプロパティとしてプロパティを指定するか、 <if> タスクを追加することを検討してください。

開始テストは、.NET 2.0 の x64 モードで単一のアセンブリファイルを形成します。

<property name="teamcity.dotnet.nant.nunit2.platform" value="x64" /> <nunit2> <formatter type="Plain" /> <test assemblyname="MyProject.Tests.dll" /> </nunit2>

C2 ではなく、カテゴリ C1 からすべてのテストを実行します。

<nunit2 verbose="true" haltonfailure="false" failonerror="true"> <formatter type="Plain" /> <test> <assemblies> <include name="dll.dll" /> </assemblies> <categories> <include name="C1" /> <exclude name="C2"/> </categories> </test> </nunit2>

テストの実行に使用する NUnit のバージョンを明示的に指定します。
この場合、次のプロパティを nunit2 タスク呼び出しに追加する必要があることに注意してください。

<property name="teamcity.dotnet.nant.nunit2.version" value="NUnit-2.4.10" /> <nunit2> <!--....--> </nunit2>

MSBuild で NUnit を使用する

このセクションでは、MSBuild から NUnit を使用する方法について説明します。

MSBuild ビルドで NUnit タスクを使用する

このセクションでは、構成済みの NUnit タスクを含む MSBuild ビルドスクリプトがすでにあり、既存のビルドスクリプトを変更せずに TeamCity でテストレポートを追跡したい場合を想定しています。 それ以外の場合は、ビルド構成のステップの 1 つとして NUnit ビルドランナーを追加することを検討してください。

MSBuild ビルドスクリプトで NUnitTeamCity タスクを使用する

TeamCity は、 MSBuild Community tasks プロジェクトの 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任意 です。

RuntimeVersion

使用する .NET フレームワーク: バージョン 1.1v2.0v4.0任意。 デフォルトでは、MSBuild ランタイムが使用されます。 MSBuild 2.0 および 3.5 の場合、デフォルトは v2.0 です。 MSBuild 4.0 の場合、デフォルト値は v4.0 です。

IncludeCategory

MSBuild コミュニティタスク(英語)プロジェクトの NUnit タスクで使用されます。

ExcludeCategory

MSBuild コミュニティタスク(英語)プロジェクトの NUnit タスクで使用されます。

NUnitVersion

テストの実行に使用される NUnit のバージョン。

NUnit 3.0 以降を使用する場合は、 以下のセクションを参照してください。

Addins

使用するサードパーティの NUnit アドインのリスト。 NUnit アドインの使用に関する詳細については、 NUnit アドインサポート セクションを参照してください。

HaltIfTestFailed

いずれかのテストが失敗した場合にタスクを失敗させる場合は

アセンブリ

テストを実行するアセンブリのリスト。

RunProcessPerAssembly

各アセンブリを新しいプロセスで実行する場合は、 を設定します。

カスタム TeamCity NUnit タスクは追加の属性もサポートしています。 使用可能な属性のリストについては、 このセクションを参照してください。

サードパーティの NUnit アドインをサポートする TeamCity テストランナーが必要な場合は、詳細について NUnit アドインサポート セクションを参照してください。

例(MSBuild ビルドスクリプトの一部):

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="NUnitTeamCity" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)"/> <Target Name="SayHello"> <NUnitTeamCity Assemblies="!!!*put here item group of assemblies to run tests on*!!!"/> </Target> </Project>

重要な注記

  • MSBuild スクリプトで システムプロパティを使用する場合は、必ず _ に置き換えてください。 たとえば、 teamcity.dotnet.nunitlauncher.msbuild.task の代わりに teamcity_dotnet_nunitlauncher_msbuild_task を使用します。

  • TeamCity は、Microsoft Visual Studio 2005 以降のソリューションファイル用に Visual Studio ソリューションランナーも提供しています。 これにより、アセンブリで単体テストを実行する際に MSBuild スタイルのワイルドカードを使用できます。

特定の NUnit ランナーバージョンを使用して NUnit テストを実行します。

<Target Name="build_01"> <!-- start tests for NUnit-2.2.10 --> <NUnitTeamCity Assemblies="@(TestAssembly)" NUnitVersion="NUnit-2.2.10"/> <!-- start tests for NUnit-2.4.6 --> <NUnitTeamCity Assemblies="@(TestAssembly)" NUnitVersion="NUnit-2.4.8"/> </Target>

NUnit 2.4.6 を使用してカスタムアドインを使用して NUnit テストを実行します。

<Target Name="build"> <NUnitTeamCity Assemblies="@(TestAssembly)" Addins="NUnitExtension.RowTest.AddIn.dll" NUnitVersion="NUnit-2.4.6"/> </Target>

NUnit 2.4.6 アセンブリごとのモード: を使用して、カスタムアドインを使用して NUnit テストを実行します。

<Target Name="build"> <NUnitTeamCity Assemblies="@(TestAssembly)" Addins="NUnitExtension.RowTest.AddIn.dll" NUnitVersion="NUnit-2.4.6" RunProcessPerAssembly="True"/> </Target>

TeamCity に依存しないビルドスクリプトを作成するには、次のオプションを検討してください。

<NUnitTeamCity ... Condition=" '$(TEAMCITY_VERSION)' != '' "/>

TeamCity から開始した場合、MSBuild プロパティ TEAMCITY_VERSION が MSBuild に追加されます。

NUnit 3.0 を使用する

バージョン 3.0 以降、NUnit は TeamCity をネイティブにサポートしているため、 以前の NUnit バージョンで行っていたように MSBuild 用の特別なタスクを使用する必要はありません。 最も簡単な方法は、標準の 実行タスク(英語)を介して NUnit コンソールを実行することです。

NUnit 入門の記事には、詳細と例が含まれています。

MSBuild サービスタスク

MSBuild の場合、TeamCity は ビルドスクリプトの操作 と同じオプションを実装する次のサービスタスクを提供します。

TeamCitySetBuildNumber では、ビルド番号を変更できます。

<TeamCitySetBuildNumber BuildNumber="1.3_{build.number}" />

{build.number} を古いビルド番号のプレースホルダーとして使用できます。

TeamCityProgressMessage では、進行状況メッセージを書き込むことができます。

<TeamCityProgressMessage Text="Progress message text" />

TeamCityPublishArtifacts では、MSBuild アイテムグループのすべてのアーティファクトを公開できます。

<ItemGroup> <Files Include="*.dll" /> </ItemGroup> <TeamCityPublishArtifacts SourceFiles="@(Files-> '%(FullPath)' )" Condition=" '$(TEAMCITY_VERSION)' != '' "/>

TeamCityReportStatsValue は、統計値を公開するための便利なタスクです。

<TeamCityReportStatsValue Key="StatsValueType" Value="42" />

TeamCityBuildProblem は、実際にビルドに失敗するビルドの問題を報告します。 ビルドの問題は ビルド結果 ページに表示され、ビルドステータステキストにも影響します。

<TeamCityBuildProblem description="description" identity="identity"/>
  • 必須の 説明 属性は、ビルドの問題を説明する人間が読めるテキストです。 デフォルトでは、 説明 はビルドステータステキストに表示されます。

  • 識別子 はオプションの属性であり、特定のビルド問題インスタンスを特徴付けます。 同じ問題が発生した場合(たとえば、同じコンパイルエラー)、ビルド全体で変更されるべきではありません。 最大 60 文字の有効な JavaID である必要があります。 デフォルトでは、 識別子説明 に基づいて計算されます。

TeamCitySetStatus は、現在のビルドステータステキストを変更するタスクです。

<TeamCitySetStatus Status="<status value>" Text="{build.status.text} and some aftertext" />

{build.status.text は、古いステータステキストに置き換えられます。 ステータスには SUCCESS 値を指定できます。

NUnit アドインサポート

NUnit アドインは、NUnit コアにプラグインし、動作方法を変更する拡張機能です。 詳細については、 NUnit アドインページ(英語)を参照してください。 このセクションでは、NAnt、MSBuild、NUnit ConsoleLauncher の NUnit アドインサポートについて説明します。

NAnt ビルドランナーでアドインを使用する

NAnt ビルドランナーで NUnit アドインをサポートするには、 teamcity.dotnet.nant.nunit2.addins プロパティをビルドスクリプトに追加する必要があります。

<property name="teamcity.dotnet.nant.nunit2.addins" value="<list of paths>" />

ここで、 <リスト> は、 ; で区切られた NUnit アドインへのパスのリストです。

例:

<property name="teamcity.dotnet.nant.nunit2.addins" value="../tools/addins/MyFirst.AddIn.dll;MySecond.AddIn.dll" />

TeamCity NUnit コンソールランチャーでアドインを使用する

コンソールランチャーの NUnit アドインをサポートするには、 /addins:<; で区切られたアドインのリスト> コマンドラインオプションを提供する必要があります。

例:

${teamcity.dotnet.nunitlauncher} /addin:../tools/addins/MyFirst.AddIn.dll;nunit-addins/MySecond.AddIn.dll

MSBuild でアドインを使用する

このセクションは NUnit 3.0 より前のバージョンに適用可能 です。

MSBuild ランナーの NUnit アドインをサポートするには、 NUnitTeamCity タスクの Addins プロパティを指定します。

Addins="<list>"

ここで、 <リスト> は、 ; または で区切られたアドインのリストです。

例:

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="build"> <ItemGroup> <TestAssembly Include="$(MSBuildProjectDirectory)/MyTests.dll" /> </ItemGroup> <Target Name="build"> <NUnitTeamCity Assemblies="@(TestAssembly)" Addins="../tools/addins/MyFirst.AddIn.dll;nunit-addins/MySecond.AddIn.dll" /> </Target> </Project>

NUnit 用 TeamCity アドイン

TeamCity NUnit アドインは バージョン 3.0 より前の NUnit をサポートします。 それ以降のバージョンについては、 このセクションを参照してください。

NUnit コンソール経由で NUnit テストを実行し、TeamCity テストランナーを起動せずに TeamCity でテスト結果を追跡したい場合、最適な解決策は NUnit 用 TeamCity アドインを使用することです。 このアドインを NUnit にプラグインすると、テストは TeamCity サーバーに自動的に報告されます。

または、 XML Report Processing ビルド機能を使用するか、 サービスメッセージを使ってテストレポートを手動で構成することもできます。

TeamCity でテスト結果を確認できるようにするには:

  1. ビルドで、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) を使用します。

  2. .DLL.pdb の TeamCity アドインファイルを NUnit アドインディレクトリにコピーします。

これらのファイルを一度だけコピーすることもできますが、TeamCity によって更新される可能性があるため、TeamCity アドインファイルが 各ビルド 用の NUnit アドインディレクトリにコピーされるようにビルドを構成することを強くお勧めします。

次の例は、NUnit 2.4.7 用 TeamCity アドインを使用して NUnit コンソールランナーを使用する方法を示しています (MSBuild の場合)。

<ItemGroup> <NUnitAddinFiles Include="$(teamcity_dotnet_nunitaddin)-2.4.7.*" /> </ItemGroup> <Target Name="RunTests"> <MakeDir Directories="$(NUnitHome)/bin/addins" /> <Copy SourceFiles="@(NUnitAddinFiles)" DestinationFolder="$(NUnitHome)/bin/addins" /> <Exec Command="$(NUnitHome)/bin/NUnit-Console.exe $(NUnitFileName)" /> </Target>

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>
2026 年 9 月 11 日