テストを分類する
単体テストの数が増えてくると対象のテストを探し出すのが大変になります。そこで、テストを分類して理解しやすいようにする方法を覚えましょう。
操作方法
まず、分類を行いたいテストメソッドをコードエディタ上に表示します。図15は今回の例としてSubTestメソッドをコードエディタで表示しているものです。
ここで、リスト1にあるようにこのテストメソッドにTestCategory属性を追記します。
[TestMethod()] [DeploymentItem("ClassLibrary1.dll")] [TestCategory("カテゴリ1")] public void SubTest() { Calculater_Accessor target = new Calculater_Accessor(); int x = 10; int y = 2; int expected = 8; int actual; actual = target.Sub(x, y); Assert.AreEqual(expected, actual); //Assert.Inconclusive("このテストメソッドの正確性を確認します。"); }
このように分類を行いたいメソッドにTestCategory属性を付与し、引数にはカテゴリ名を記述します。カテゴリ名は任意の文字列で記述することができます。
いくつかのテストメソッドにTestCategory属性を記述することができたら、ビルドを行ってからテストビューウィンドウを表示します。テストビューウィンドウが開いたら、ウィンドウ内の任意の場所でコンテキストメニューを表示し、[列の追加および削除]を選択します。列の追加と削除のウィンドウが開いたら、一覧から[テストカテゴリ]にチェックを入れて[OK]をクリックします。するとテストビューウィンドウには図16のようにテストカテゴリ列が追加され、先ほど設定したTestCategory属性の内容が表示されます。
次にウィンドウメニューにあるフィルター列からテストカテゴリを選択し、フィルターテキストに例えばカテゴリ1と入力すると図17のようにフィルターに一致するテストのみを表示することができます。
これでテストを分類して表示することができました。
テストリストエディターを使った分類方法
Visual Studio 2010 Premium Edition以上のエディションを利用していると、テストビューウィンドウの他にテストリストエディターというものが利用できるようになります。環境がある場合には、こちらを利用したほうがTestCategory属性を利用して、テストを分類するよりも少ない手間で分類を行うことができます。
テストリストエディターはVisual Studioの[テスト]メニューから[ウィンドウ]-[テストリストエディター]を選択するか、ソリューション内に含まれる拡張子vsmdiのファイルをダブルクリックすることで開くことができます。
テストリストエディターでは階層構造のテストリストの管理とそこに含まれるテストメソッドの管理を行うことができます。例えば、テストリストを階層構造で作成すると図18のようになります。
図18ではBVTというテストリストの下に2つのテストリストが含まれています。また、現時点ではどのテストリストにも属していない単体テストが4つ表示されていることも分かります。
次にテストリストにテストメソッドを追加していきます。1つのテストメソッドは1つのテストリストに含めることができます。図18のように読み込まれたすべてのテストか一覧に存在しないテストを選んだ状態で右側に表示されるテストメソッドをテストリストにドラッグ&ドロップすることで設定していくことができます。例えば図19はCategory1に3つのテストメソッドを追加したところです。図19には表示されていませんが、残りの一つはCategory2に追加してあります。
これで、テストメソッドの分類が完了しました。
最後にここからテストメソッドを選択して実行することができます。例えば、テストリストのCategory1にチェックをつけて実行すれば、3つのテストが実行されます。テストリストのBVTを選択するとBVTとその配下の全テストリストに含まれるテストが選択されて実行されます。このようにテストリストエディターを利用するとテストメソッドを階層構造で管理したり、そこから任意のものを選択して実行するということが非常にやりやすくなります。
補足や注意事項
テストを分類する方法をいくつか見てきましたが、何点か補足と注意事項を確認しておきましょう。
まず、TestCategory属性は1つのテストメソッドにいくつでも設定することができます。テストカテゴリを大分類、中分類、小分類のように利用すると仮定すると、小分類のカテゴリに入るテストメソッドには大分類と中分類のTestCategory属性も付与しておくことで、フィルターする際にさまざまなフィルターが可能となります。
次に、テストビューウィンドウでのフィルター処理はテストカテゴリ以外でも利用することができます。テストクラス名やテストメソッド名などの他にもフィルターに利用可能な列がいくつも用意されています。任意のテストメソッドを探し出したい際には、うまく活用してみてください。
余談ですが、Visual Studio 2010と共に用意されているVisual Studio Team Foundation Server 2010という製品を利用する場合、テストリストエディターで作成したテストリストがないと利用できない機能やTestCategory属性よりもテストリストを利用したほうが便利な機能がいくつかあります。もし、Visual Studio 2010 Premium Edition以上の環境を用意可能でかつTeam Foundation Server 2010の利用も検討している場合にはテストリストエディターを利用しておくことをお奨めします。
まとめ
今回は、さまざまなテストの実行方法やテストの分類方法を確認してきました。いろいろな方法が用意されているので、自分のリズムにあった方法を利用して、テンポよく実施していける方法を探ってみてください。次回も引き続き、いくつかのシナリオに基づいて使い方を見ていきたいと思います。どうぞお楽しみに。