TeamCity 2020.2 ヘルプ

MSBuild の NUnit

このページでは、MSBuild から NUnit を使用する方法について説明します。

MSBuild ビルドでの NUnit タスクの使用

このセクションの情報は、バージョン 3.0 より前の NUnit を使用している場合に適用されます。それ以降のバージョンについては、以下のセクションを参照してください。

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

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

TeamCity は、MSBuild コミュニティタスク(英語)プロジェクトの NUnit タスクと互換性のあるカスタム NUnitTeamCity タスクを提供します。ビルドスクリプトで NUnitTeamCity タスクを提供すると、TeamCity はタスク内で指定されたオプションに基づいて独自のテストランナーを起動します。TeamCity がテストを実行するため、NUnit ランナーは必要ありません。

NUnitTeamCity タスクを正しく使用するには、次の手順を実行します。

  1. teamcity_dotnet_nunitlauncher システムプロパティがビルドエージェントでアクセス可能であることを確認してください。Windows を実行しているビルドエージェントは、これらのプロパティを環境変数として自動的に検出する必要があります。手動で設定する必要がある場合は、agent-specific プロパティの定義を参照してください。

  2. 次の構文を使用して、NUnitTeamCity タスクで MSBuild ビルドスクリプトを構成します。

    <UsingTask TaskName="NUnitTeamCity" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" /> <NUnitTeamCity Assemblies="@(assemblies_to_test)" />

NUnitTeamCity タスクは、次の属性をサポートしています。

プロパティ

説明

Platform

x64 マシンの実行モード。サポートされる値は、x86x64ANY です。

RuntimeVersion

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

IncludeCategory

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

ExcludeCategory

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

NUnitVersion

テストの実行に使用される 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 例: NUnit-2.2.10

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

Addins

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

HaltIfTestFailed

いずれかのテストが失敗した場合、True はタスクを失敗させます。

Assemblies

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

RunProcessPerAssembly

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

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

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

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

<Project xmlns="http://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 Studio2005 以降のソリューションファイル用の 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)' != '' "/>

MSBuild プロパティ TEAMCITY_VERSION は、TeamCity から起動されると msbuild に追加されます。

NUnit 3.0 での作業

このセクションの情報は、NUnit 3.0 以降を使用している場合に適用されます。NUnit の以前のバージョンについては、上記のセクションを参照してください。

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

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="14.0" DefaultTargets="RunTests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <Target Name="RunTests">   <Exec IgnoreExitCode="True" Command="nunit3-console.exe Tests.dll">  <Output TaskParameter="ExitCode" ItemName="exitCode" />   </Exec>  <Error Text="Error while running tests" Condition="@(exitCode) < 0" />   </Target> </Project>

NUnit コンソールは失敗したテストの数を正の終了コードとして返し、NUnit テストインフラストラクチャの障害の場合は負の終了コードとして返します。

TeamCity はテスト実行の進行を制御しますが、NUnit インフラストラクチャの例外により、TeamCity が必要な情報を収集できない場合があります。そのため、IgnoreExitCode="True" 属性を設定する必要があります。これは、肯定的な終了コードを無視し、いくつかの失敗したテストのためにビルドを中断しません。エラー(英語)タスクは、負の終了コードのテストインフラストラクチャエラーの場合にビルドを停止します。

Build step: MSBuild

プロジェクトファイルに加えて、MSBuild バージョンとターゲットプラットフォームを定義し、プロファイルとその他の設定を使用できます。

NUnit を使ってみるには詳細とその他の例が含まれています。