ビルド プロセスでのテストの実行
ビルド処理の一環として、Team Foundation ビルド を使用して自動テストを実行し、コードに加えた変更のテストへの影響を分析することができます。 たとえば、ビルド処理を定義して、定期的にスケジュールされたチームのビルド確認テスト (BVT) の実行に使用することができます。 また、自動テストを実行し、カスタム ビルド処理からテスト関連のタスクを実行することもできます。
注意
ビルド処理の一部としてアプリケーションを配置する場合は、ビルド、配置、テストのワーク フローおよびラボ環境を使用する必要があります。ワークフローの一部として自動テストを実行したり、ワークフローが完了した後に別途テストを実行することができます。詳細については、「自動ビルド、配置、およびテストのワークフロー」を参照してください。
Team Foundation ビルドでは、次のような操作を行うことができます。
ビルド処理でテスト実行を準備する
自動テストを実行する
Visual Studio テスト ランナーで実行されるテストの条件を指定する
テストを一時的に無効にする
テスト影響分析を有効にする
複数のテストの実行を定義する
サードパーティ製の単体テスト フレームワークを構成する
カスタム ビルド処理のテストを操作する
詳細情報
ビルド処理でテスト実行を準備する
ビルド処理でテストを実行する前に、最初にテストとビルド システムを準備する必要があります。
テストを準備する: ソリューションおよびテスト ファイルがバージョン管理にチェックインされていることを確認します。 「バージョン管理の使用」を参照してください。
テストをカテゴリに分類し、優先度を付ける (オプション) : ビルドのテストを実行するときに、カテゴリおよび優先度を割り当てることで、これらの属性でフィルター処理を行うことができます。 たとえば、CI というテスト カテゴリを作成し、継続的な統合ビルドでそのカテゴリを指定できます。 また、bvt というビルド確認テスト カテゴリを作成し、夜間ビルドなどのスケジュール ビルドでそのカテゴリを指定できます。 詳細については、「テスト カテゴリの定義によるテストのグループ化」、「TestCategoryAttribute」、および「PriorityAttribute」を参照してください。
ビルド サーバーを準備する: 一部の種類のテストは、特殊な構成のビルド サーバーでビルド エージェントによってのみ実行できます。 たとえば、コード化された UI テストを実行する場合、対話形式で実行されるようにビルド エージェントを構成する必要があります。 ビルド プロセスを使用してテストを実行する前に、使用する予定のビルド サーバーで実行できることを確認してください。 詳細については、「Use Your Build Agent to Run Tests」を参照してください。
Microsoft Visual Studio は、次のシナリオでビルド サーバーにインストールする必要があります。
CPP テスト プロジェクトをビルドするには、Visual Studio Professional 以降をインストールする必要があります。
単体テスト、またはコード化された UI テストを実行するには、Visual Studio Professional 以降をインストールする必要があります。
データ アダプターと診断データ アダプターを使用するには、次をインストールします。
コード カバレッジ: Visual Studio Premium 以降。
テストの影響: Visual Studio Ultimate。
IntelliTrace: Visual Studio Ultimate。
ビルド コンピューターで最新スタイルのアプリをビルドする場合: Visual Studio Ultimate または Visual Studio Express for Windows 8 (ビルド サーバーのオペレーティング システムは Windows 8 である必要があります)。
faked アセンブリでプロジェクトのテストをコンパイルおよび実行する場合: Visual Studio Ultimate。
自動テストを実行する
既定テンプレートに基づくビルドで 1 つ以上のテスト実行を行うことができます。 テストの実行ごとに、次の設定を指定できます。
実行するテスト
テストの実行に使用する設定
テストが失敗した場合にビルドを失敗とするかどうか
チーム エクスプローラーで、 [ホーム]、 [ビルド] の順に選択します (キーボード: Ctrl + 0、B)。
[ビルド] ページで [ビルド定義の新規作成] をクリックするか、ビルドまたは選択したビルド定義のコンテキスト メニューを開き、[ビルド定義の編集] をクリックします。
[ビルド定義] ウィンドウが開きます。
ビルド定義の [プロセス] タブで、[自動テスト] ボックスをオンにし、省略記号ボタン (...) をクリックします。
[自動テスト] ダイアログ ボックスが表示されます。
次のいずれかの操作を実行します。
一連のテストを追加するには、[追加] を選択します。
一連のテストを変更するには、テストを選択し、[編集] を選択します。
[テストの追加/編集] ダイアログ ボックスが表示されます。
(オプション) テスト実行の [名前] を指定します。 この名前がビルド結果ウィンドウに表示されます。 名前を指定しない場合は、システムによって名前が自動生成されます。
このテスト実行に含まれるテストのいずれかが失敗した場合にビルドを失敗とする場合は、[テスト失敗時にビルドを失敗させる] を選択します。 このチェック ボックスをオフのままにし、いずれかのテストが失敗すると、完了したビルドは [一部成功] に分類されます。
テスト アセンブリ ファイルの指定
実行されるテストが含まれるバイナリ ファイルを指定します。 ビルド エージェントの作業ディレクトリの binaries サブディレクトリで *test*.dll と一致するすべての .dll ファイルが再帰的に検索されるようにする場合は、既定値 (**\*test*.dll) のままにします。 または、ニーズに合わせてファイル指定を変更します。
テスト実行でコード カバレッジ データを収集および公開する場合は、[オプション] を [コード カバレッジを有効にする] に設定します。
または、[カスタム] オプションを使用して .runsettings ファイルを指定します。 詳細については、「コード カバレッジ分析のカスタマイズ」を参照してください。
[テスト実行するターゲット プラットフォームの選択] メニューで、[x86] を選択して 32 ビット バイナリをテストするか、[x64] を選択して 64 ビット バイナリをテストします。
実行されるテストの条件を指定できます。
Visual Studio テスト ランナーで実行されるテストの条件を指定する
実行されるテストをフィルター処理するための名前と値のペアを指定できます。 テスト カテゴリと優先度属性を使用してテストの整列と優先順位付けを行った場合、TestCategory および優先度の名前を使用して実行されるテストをフィルター処理できます。
テスト カテゴリは、次のいずれかの形式で指定できます。
**フィルターに含める 1 つの名前と値のペアを指定します。**たとえば、bvt というテスト カテゴリを作成したとします。 [テスト ケース フィルター] を TestCategory=bvt に設定すると、このカテゴリのテストだけが実行されます。
**|| (OR 演算子) を使用して、複数のテスト カテゴリを指定します。**たとえば、TestCategory=quick||TestCategory=gui と指定すると、quick カテゴリに含まれるテストと gui カテゴリに含まれるテストを実行できます。
テストを一時的に無効にする
テストが含まれたテスト セットを削除せずにテストを一時的に無効にする必要がある場合は、[詳細設定] ノードを展開し、[テストの無効化] を True に設定します。 テストを再び有効にする場合は、値を False に戻します。
テスト影響分析を有効にする
テスト担当者や開発者は、完了したビルドに含まれるコード変更がテストに与える影響を把握することが必要となる場合があります。 テスト影響分析を有効にすると、コードの変更がテストに与える影響の分析が行われ、その結果が完了したビルドのビルド レポートに報告されます。
既定テンプレートに基づくビルド プロセスでテスト影響分析を有効にするには
テスト設定ファイルでテスト影響分析を設定します。
詳細については、「方法: コードの変更後に実行するテストをチェックするためのデータを収集する」を参照してください。
テスト設定ファイルを使用するように設定されたテストのセットを作成します。
詳細については、このトピックの「自動テストを実行する」を参照してください。
[詳細設定] ノードを展開し、[テストの影響の分析] が True に設定され、[テストの無効化] が False に設定されていることを確認します。
複数のテストの実行を定義する
テストの実行は、チームのビルドおよびテスト プロセスの要件を満たすために必要な数だけ定義できます。 たとえば、1 つのビルドで複数のテストの実行を定義する必要がある状況を次にいくつか示します。
Visual Studio テスト ランナーを使用して、32 ビットおよび 64 ビットのビット数を持つバイナリを生成するソリューションをテストする場合。
次の 2 つのテスト セットがある。
合格することが必要な優先度の最も高いコア テストのセット。 [テストの最小優先度] が含まれ、[テストの最大優先度] が 1 であるテストのセットを定義する場合。 [テスト失敗時にビルドを失敗させる] チェック ボックスをオンにします。
実行した方がよいが、合格しなくてもビルドの使用可能性に影響しない、重要度の低いテストのセット。 [テストの最小優先度] が 2 で、[テストの最大優先度] が 3 であるテストのセットを定義する場合。 [テスト失敗時にビルドを失敗させる] チェック ボックスをオフのままにします。
同じテスト セットを異なるテスト設定で実行する。
ビルドするアセンブリのメイン セットをコード カバレッジの対象とするが、 外部ソースからの別のアセンブリ セットもあり、それらはコード カバレッジを必要としない。 このようなプロセスを実行するには、2 つのテスト設定ファイル グループを使用するように設定された 2 つのテスト セットを使用します。
サードパーティ製の単体テスト フレームワークを有効にする
ビルド プロセスでは、サードパーティ製フレームワーク アセンブリへのアクセス権を持つビルド コントローラーを使用している場合にのみ、サードパーティ製の単体テスト ワークフレームに基づいて単体テストを実行できます。
サーバー上のカスタム アセンブリ フォルダーからワークスペースのローカル フォルダーへのマッピングを検索するか、必要に応じて作成します。
サードパーティ製の単体テスト プラグインを取得します。
アダプター
言語
C++
JavaScript
C++
C#
MSpec
C#
Python
Silverlight
TypeScript
Node.js
C#
C++
プラグインの .vsix ファイルの名前を .zip ファイルに変更します。 たとえば、次のようにコマンド プロンプトを使用します。
C:\Downloads>ren NUnitTestAdapter.vsix NUnitTestAdapter.zip
手順 2. でマップしたローカル ワークスペース フォルダーに .zip ファイルの内容を解凍します。
-
ヒント
バージョン管理でサードパーティのバイナリ ファイルを使用する方法については、「Leverage third-party binaries that your code does not build (コードでビルドされないサードパーティ バイナリの活用)」を参照してください。
[Visual Studio 2012.3] には、チーム ビルド定義にサードパーティ製の単体テスト フレームワークを自動的に含めるための、サードパーティ製の単体テスト フレームワーク向け拡張機能が含まれています。
注意
フレームワークにビルド定義の拡張機能が含まれるようにするには、サードパーティ製の単体テスト フレームワーク用 NuGet パッケージの最新バージョンのインストールが必要である可能性があります。
ビルド コントローラーでサード パーティの単体テスト フレームワークを有効にする - [Visual Studio 2012.1]
ソリューション エクスプローラーで、テスト プロジェクトのコンテキスト メニューを開き、[NuGet パッケージの管理] をクリックします。
[NuGet パッケージの管理] ダイアログ ボックスの左側の列で、[オンライン] をクリックします。
サードパーティ製の単体テスト フレームワーク用 NuGet パッケージを選択し、[インストール] をクリックします。
NuGet パッケージのインストールが完了した後、[閉じる] をクリックします。
ソリューション エクスプローラーで、ソリューションのコンテキスト メニューを開き、[ソリューションをソース管理に追加] をクリックします。
これで、ビルドをキューに配置し、サードパーティ製の単体テスト フレームワークを使用したテストが自動的に実行されます。
カスタム ビルド プロセスのテストを操作する
チームでより詳しくカスタマイズされた機能を持つビルド処理が必要な場合は、カスタム ビルド処理からテストを実行し、その他のテスト関連タスクを実行することができます。 詳細については、次のトピックを参照してください。
次の操作:
さらに掘り下げた操作
「ビルド プロセスに既定のテンプレートを使用」では、既定テンプレートに基づくビルド定義を作成する方法について詳細に説明されています。 このトピックでは、コードをコンパイルするときに使用できる [プラットフォーム] ビット数について説明します。