SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Visual Studio 単体テスト機能大全

Visual Studioで作る単体テスト、いろいろな実行方法

Visual Studio 単体テスト機能大全(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

テストを分類する

 単体テストの数が増えてくると対象のテストを探し出すのが大変になります。そこで、テストを分類して理解しやすいようにする方法を覚えましょう。

操作方法

 まず、分類を行いたいテストメソッドをコードエディタ上に表示します。図15は今回の例としてSubTestメソッドをコードエディタで表示しているものです。

図15 編集対象にするテストメソッド
図15 編集対象にするテストメソッド

 ここで、リスト1にあるようにこのテストメソッドにTestCategory属性を追記します。

リスト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属性の内容が表示されます。

図16 テストカテゴリ列の表示
図16 テストカテゴリ列の表示

 次にウィンドウメニューにあるフィルター列からテストカテゴリを選択し、フィルターテキストに例えばカテゴリ1と入力すると図17のようにフィルターに一致するテストのみを表示することができます。

図17 テストメソッドのフィルター表示
図17 テストメソッドのフィルター表示

 これでテストを分類して表示することができました。

テストリストエディターを使った分類方法

 Visual Studio 2010 Premium Edition以上のエディションを利用していると、テストビューウィンドウの他にテストリストエディターというものが利用できるようになります。環境がある場合には、こちらを利用したほうがTestCategory属性を利用して、テストを分類するよりも少ない手間で分類を行うことができます。

 テストリストエディターはVisual Studioの[テスト]メニューから[ウィンドウ]-[テストリストエディター]を選択するか、ソリューション内に含まれる拡張子vsmdiのファイルをダブルクリックすることで開くことができます。

 テストリストエディターでは階層構造のテストリストの管理とそこに含まれるテストメソッドの管理を行うことができます。例えば、テストリストを階層構造で作成すると図18のようになります。

図18 テストリストの階層構造
図18 テストリストの階層構造

 図18ではBVTというテストリストの下に2つのテストリストが含まれています。また、現時点ではどのテストリストにも属していない単体テストが4つ表示されていることも分かります。

 次にテストリストにテストメソッドを追加していきます。1つのテストメソッドは1つのテストリストに含めることができます。図18のように読み込まれたすべてのテストか一覧に存在しないテストを選んだ状態で右側に表示されるテストメソッドをテストリストにドラッグ&ドロップすることで設定していくことができます。例えば図19はCategory1に3つのテストメソッドを追加したところです。図19には表示されていませんが、残りの一つはCategory2に追加してあります。

図19 テストリストにテストメソッドを設定
図19 テストリストにテストメソッドを設定

 これで、テストメソッドの分類が完了しました。

 最後にここからテストメソッドを選択して実行することができます。例えば、テストリストの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の利用も検討している場合にはテストリストエディターを利用しておくことをお奨めします。

まとめ

 今回は、さまざまなテストの実行方法やテストの分類方法を確認してきました。いろいろな方法が用意されているので、自分のリズムにあった方法を利用して、テンポよく実施していける方法を探ってみてください。次回も引き続き、いくつかのシナリオに基づいて使い方を見ていきたいと思います。どうぞお楽しみに。

参考文献

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Visual Studio 単体テスト機能大全連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト りばてぃ(リバティ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5911 2011/05/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング