.NET Toolsテスト駆動開発ツール最前線(前編)− .NET用テスト駆動開発支援ツールNUnitの新機能 − (株)ピーデー 川俣 晶2004/11/06 |
|
|
GUIテストランナーとテストのための新機能
新機能の中でも特に注目すべきはMockオブジェクトのサポートなのだが、最初から取り組むにはやや大物過ぎるかもしれない。そこで、まずは比較的簡単な話題から入っていくことにしよう。
テストの数が増えてくると、やはりきめ細かくテストを行いたいという希望が出てくる。例えば、気軽にいつでも実行できるように全テストの実行が30秒で終わるようになっていたとしても、コード修正とテスト実行を繰り返す状況でいつも30秒待つのはつらい。そのため、実行したいテストだけチェック・ボックスにチェックを入れる機能や、あらかじめテストをカテゴリ分けしておき、特定のカテゴリだけ実行する機能などが用意されている。それらを体験するために、以下のようなサンプル・コードを用意してみた。
なお、プログラム言語としてはVisual Basic .NET(以下、VB.NET)を使用している。ここでは、Visual Studio .NET 2003(以下、VS.NET)を使用し、VB.NETのクラス・ライブラリとしてプロジェクトを作成。そして、プロジェクトの参照で「nunit.framework.dll」を追加した。その後、以下のようなソース・コードを入力して完了である。
|
|
NUnit 2.2のGUIテストランナー用サンプル・コード(VB.NET) |
これを、NUnit 2.2のGUIテストランナーにより実行させると以下のような結果になる。
NUnit 2.2のGUIテストランナー実行画面 |
なお、画面左側のツリーにチェック・ボックスが表示されていない場合は、[View]メニューの[CheckBoxes]を選択すると表示される。
さて、このサンプル・コードには意図的に失敗するテストが含まれているので、成功を示す緑のマーク(緑の丸印)ほかに、失敗の赤いマークも見える。しかし、そのほかに、無視の黄色も見える。従来のNUnitは、緑と赤だけの世界であったが、使い方によって成功でも失敗でもない状態を意図的に作り出すことができる。それにどのような価値があるかは以下の解説の中で説明しよう。
■テストをカテゴリで分類するCategory属性
まず初めに個々のテスト・メソッドに付いているCategory属性に注目していただきたい。これは、テストをカテゴリ分けするために使用する。テストを目的などによって、「database」「search」「input」などと名前を付けて分類することができる。名前はCategory属性の引数に文字列を渡して指定する。同じ名前を持つテスト・メソッドは、同じカテゴリに属することになる。
このカテゴリを使って、実行するテストを限定することができる。例えば、成功するテストだけを集めたカテゴリ「SuccessSamples」だけをテストするには、[Categories]タブでこれを選択し、[Add]ボタンをクリックしてから[Run]ボタンをクリックすればよい。
SuccessSamplesカテゴリの選択 |
テスト・メソッドにはCategory属性によりカテゴリを設定できる。GUIテストランナーの[Categories]タブには利用可能なカテゴリの一覧が表示されるので、テストをするカテゴリを[Add]ボタンにより選択し、[Run]ボタンをクリックすれば、指定したカテゴリのテストだけを実行することができる。 |
どのテストが実行されたのかは、[Tests]タブをクリックすると確認できる。
SuccessSamplesカテゴリのテスト画面 |
指定したカテゴリのテスト結果は、[Tests]タブに切り替えると確認できる。指定カテゴリ以外のテストは実行されずにグレーで表示される。 |
このように、指定カテゴリに含まれない(指定カテゴリの名前が付いていない)テストは、緑にも赤にも黄色にもならず、グレーのまま残り、実行の対象になっていないことが分かる。
このようなカテゴリ分けは、テストの規模が大きくなってくると便利である。いくら、気軽にいつでも実行できるようにできるだけ短時間で完了するようにテストを作ったとしても、プログラムの規模が大きくなるにつれてテストの数が増えれば、気軽には実行できなくなる。自分が扱っている部分と関係が深い部分だけテストを行いたい、と思うこともあるだろう。
これに対処する最も簡単な方法は、カテゴリごとにテストのアセンブリを分けることだが、自分の担当するカテゴリと関係の深い別のカテゴリをテストしようと思うと、別のアセンブリをGUIテストランナーに追加しなければならず、手間が増える。また、たまには全テストを行おうと思った場合、すべてのテスト・アセンブリを追加する手間が発生する。
これに対して、Category属性を使ったカテゴリ分けであれば、クリック1つでテスト対象のカテゴリを増減でき、すべてのテストを実行するのも容易。さらに、[Exclude these categories]オプションにチェックを入れることにより、指定カテゴリ以外のテストだけを実行することも可能なので、何らかの理由で失敗することが分かっている特定カテゴリだけを除外したテストもでき、はるかに使い勝手に優れる。
INDEX | ||
[.NET Tools] | ||
テスト駆動開発ツール最前線(前編) | ||
1.プログラム開発の効率をアップするための方法 | ||
2.GUIテストランナーとテストのための新機能(1) | ||
3.GUIテストランナーとテストのための新機能(2) | ||
テスト駆動開発ツール最前線(後編) | ||
1.Test Driven .NETによる統合されたテスト | ||
2.Mockオブジェクトとは何か− NUnitのMockオブジェクト | ||
3.より高度なMockオブジェクトを実現するNMock | ||
「.NET Tools」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|