連載:Team Foundation Server 2010入門

第5回 Team Foundation Server 2010 自動ビルドの便利機能を使いこなそう

WINGSプロジェクト りばてぃ(監修:山田 祥寛)
2010/11/24
Page1 Page2 Page3

「単体テスト」と自動ビルドの組み合わせ

 静的コード分析の次は、単体テストを自動ビルドに組み込んでみよう。

 単体テストは、「Unit Test(ユニット・テスト)」とも呼ばれ、「メソッドやプロパティの動きが期待どおりかどうか」を確かめるための機能だ。テスト・ファーストTDD(テスト駆動開発)などの言葉の中でよく語られているため、イメージはつかみやすいだろう。こちらも(静的コード分析と同様に)通常は開発者が自端末で動かして利用する機能だが、自動ビルドに組み込むことで自動的かつ強制的にテストを行えるため、品質確保のための切り札となり得る。

 組み込み方には、大まかに2つの方法がある。1つは、あらかじめ指定された名前の.dllファイルを作成し、そこに単体テストを含める方法。もう1つは、テスト対象のメソッドを手動で指定して単体テストを実行する方法だ。

.dllファイル(=テスト・アセンブリ・ファイル)に単体テストを含める方法

 前者の方法は、(単体テストに対する)標準の設定で選択されている方法であり、MSDNライブラリの記述でも推奨*1される設定となっている。この方法の場合、決まった名前の.dllファイル(=既定では「test」という単語が名前に含まれる.dllファイル)内に単体テストを含めておくだけでよく、実行し忘れがなくなるだけでなく、テスト対象を細かく指定しなくても実行できるというメリットがある。

*1 「MSDNライブラリ:既定のテンプレートを使用してビルドを定義する − ビルドが自動テストを実行するように構成するには」に記述されている「テスト アセンブリ ファイルの指定」を参照されたい。

テスト対象のメソッドを手動で指定したテスト・リストを使用して単体テストを実行する方法

 後者の方法の場合は、今回の設定を行うマシンにVS 2010 Premium以上に付属するテスト・リスト機能を利用する必要がある。Professionalしか利用できない場合には、そもそも利用できないというデメリットがある。

 テスト・リストは、ソリューションに含まれるすべての単体テストを自分の好みにカテゴライズして、任意のカテゴリ単位でテストを実行できるようにする機能だ。これにより、自動テストに利用するもの/しないものを簡単に管理することが可能だ。

 今回は、この後者の方法についてざっと手順を確認しておくことにしよう。

テスト・リストの作成/確認

 単体テスト(と、それを含めるテスト・プロジェクト)の作成方法そのもの*2については別記事(参考:「特集:Visual Studio 2008単体テスト機能徹底活用」)に譲ることにして、単体テストを管理するテスト・リストから確認する。

*2 まずは、既存のソリューションに対して、空のテスト・プロジェクト(空の単体テストが1つ含まれる)を追加する(具体的には、[ソリューション エクスプローラー]のソリューション項目の右クリック・メニューから[追加]−[新しいプロジェクト]を選択して、そこで表示される[新しいプロジェクトの追加]ダイアログで「テスト プロジェクト」というテンプレートを選択して、新規にプロジェクトを作成する)。そして、追加したテスト・プロジェクトに対して、任意の単体テストを複数追加する(具体的には、プロジェクト項目の右クリック・メニューから[追加]−[新しいテスト]を選択して、そこで表示される[新しいテストの追加]ダイアログで「単体テスト」もしくは「単体テスト ウィザード」というテンプレートを選択して、新規に単体テストを作成する)。最後に、単体テストを含むテスト・プロジェクトは、いったんビルドしておく。

 (単体テストが含まれるテスト・プロジェクトを内包する)Visual Studioソリューションの配下にある「Solution Items」フォルダに、「<ソリューション名>.vsmdi」というファイル(=テスト・メタデータ・ファイル)が含まれているはずなので、これを開くと、図5のような[テスト リスト エディター]画面が表示される。

図5 テスト・リストの編集([テスト リスト エディター])

 ここで、左側のツリー表示部分の[テストの一覧]項目の右クリック・メニューから[新しいテスト リスト]を選択して、[新しいテスト リストの作成]ダイアログが表示されるので、図6のように[名前]欄に適当な名前を設定し、[OK]ボタンをクリックする。

図6 [新しいテスト リストの作成]ダイアログでのテスト・リストの名前の入力

 図5のような画面に復帰すると、[テストの一覧]項目の配下に新しいテスト・リスト(今回の例では「BVT」)が追加されている。

テスト・リストへの単体テストの追加

 次は、[一覧に存在しないテスト]項目を選択すると、ソリューションに含まれる単体テストが(右側のリスト部分に)一覧表示されるので、テスト・リストに含めたい単体テストを、先ほど作成したテスト・リスト項目の上にドラッグ&ドロップして移動させていこう。

階層構造を持つテスト・リストの作成について

 なおテスト・リストは、(今回の例のように)[テストの一覧]項目の直下に複数作成することもできるし、テスト・リストのサブ項目として作成することもできる。図7はいくつかのテスト・リストを階層構造で作成した例となっている。テスト・リストの階層の作り方については自動ビルドに単体テストを組み込んだ後に再度触れる。

図7 テスト・リストの階層構造

ビルド定義のビルド・プロセス・パラメータの設定/確認

 テスト・リストが完成したので、チェックインを忘れずに行い、次は自動ビルド(=ビルド定義)でこのテスト・リストを利用するように設定しよう。

 [チーム エクスプローラー]で、([ビルド]項目の配下にある)対象となるビルド定義の項目の右クリック・メニューから[ビルド定義の編集]を選択して、ビルド定義エディタを表示する。そこで、左メニューから再度[プロセス]を選択する。図2と同様の画面だが、[ビルド プロセス パラメーター]のところを少し下にスクロールし、図8のように[自動テスト]という欄を表示しよう。

図8 ビルド・プロセス・パラメータの[自動テスト]欄の編集(ビルド定義エディタ)

 ここで、右端の[...]ボタンをクリックすると、図9のような[自動テスト]ダイアログが表示される。

図9 自動テストの設定([自動テスト]ダイアログ)

 [実行するテスト]一覧を見ると、本節の冒頭で触れた「定められた名前の.dllファイル(=既定では「test」という単語が名前に含まれる.dllファイル)に含まれる単体テストを実行する」という設定が標準で追加されているのが分かる。今回はこれを利用しないので、削除してしまって構わない。

 削除後に[追加]ボタンをクリックすると、今度は図10のような[テストの追加/編集]ダイアログが表示される。

図10 [テストの追加/編集]ダイアログ

 [テストの種類]タブで[テスト メタデータ ファイル (.vsmdi)]ラジオボタンを選択し、次に[参照]ボタンをクリックして.vsmdiファイルの選択を行う。このための[参照]ダイアログでの項目は、一見するとファイル・システムのようだが、実際はTFS 2010のソース管理上に登録されているフォルダ/ファイルからの選択となっている。

図11 .vsmdiファイルの選択(TFS 2010のソース管理上に登録されているフォルダ/ファイルから)

 .vsmdiファイル(図11の例では「WindowsFormsApplication1.vsmdi」)を選択して、図10の画面に戻ると、今度は図12のように[実行するテスト リスト]一覧に、先ほど作成したテスト・リスト群が表示された状態となる。

図12 .vsmdiファイル読み込み後の[テストの追加/編集]ダイアログ

 ここでは、[この VSMDI ファイルのすべてのテストを実行する]チェックボックスにチェックを入れてすべての単体テストを実施するか、チェックを外した後にその下の[実行するテスト リスト]一覧で各項目のチェックボックスにチェックを入れて、複数任意のテスト・リストに含まれる単体テストを実行するかを選択することができる。これが自動テストで実行する単体テストを自由に設定できる一番のポイントだ。

 設定が完了したら、表示されているダイアログの[OK]ボタンをクリックしながら順次閉じていき、最後にビルド定義を保存すれば編集が完了となる。

単体テストを伴う、自動ビルドの実行

 静的コード分析の場合と同様に、編集したビルド定義(=自動ビルド)を実行すると、図13のような結果画面が表示される。この例では、5つのテストが実行され、そのうちの2つが失敗していることが分かる。

図13 単体テストを組み込んだ自動ビルドの結果

 なお、図13はビルド結果の中にある[テスト結果の表示]というリンクをクリックした後の状態である。図13の下部にあるように、自端末で単体テストを行ったときと同様の[テスト結果]ウィンドウで、テストを実行した結果を参照できるようになっている。

 それでは次のページでは、テスト・リストの階層設計に関する注意点と、前回あまり紹介できなかった「ゲート・チェックイン」について説明する。


 INDEX
  [連載]Team Fourndaiton Server 2010入門
  第5回 Team Foundation Server 2010 自動ビルドの便利機能を使いこなそう
    1.「静的コード分析」と自動ビルドの組み合わせ
  2.「単体テスト」と自動ビルドの組み合わせ
    3.テスト・リストの階層設計/ゲート・チェックイン

インデックス・ページヘ  「連載:Team Foundation Server 2010入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間