連載:VSTSの単体テスト機能は本当に使えるのか?

第1回 Team Systemのテスト機能の実際

太陽システム株式会社 中西 庸文
Microsoft MVP 2006 - Solutions Architect)
2006/08/09
Page1 Page2 Page3 Page4

4. テスト・メソッドの修正

 次に、開発者の意図を表現するように、自動生成されたテスト・クラスのテスト・メソッド(AddTestメソッド)を修正する。ここではメソッドのパラメータの値(=変数xと変数yの値)とメソッドの実行結果の期待値(=変数expectedの値)を修正した。

 このAddTestメソッドは、テスト対象プロジェクトのCalculatorクラスのAddメソッドを設定したパラメータ(変数xと変数yの値)で呼び出して、その戻り値(変数actualの値)と設定した期待値(変数expectedの値)が等しいことを確認する 。つまり、変数actualの値が変数expectedの値と等しくなければ、テストは失敗することになる。

テスト・メソッドの修正
テスト・クラスのテスト・メソッドは、そのままではうまく機能しないので、開発者の意図を表現するように修正する必要がある。

5. テストの実行

 では、いま作成したテストを実行してみよう。

 ソリューション・エクスプローラでテスト・プロジェクトをスタートアップ・プロジェクトに設定し、メニュー・バーから[デバッグ]−[デバッグ開始](=[F5]キー)、または[デバッグ]−[デバッグなしで開始](=[Ctrl]+[F5]キー)でテストを実行する。テスト対象クラスのメソッドの実装をまだ行っていないので、テストは失敗するはずだ。

テストの実行
単体テストのプロジェクトをスタートアップ・プロジェクトに設定してデバッグ実行を行う。これにより単体テストを実行できる。実行した結果は[テスト結果]ウィンドウに表示される。

 テスト結果の詳細を表示するには、[テスト結果]ウィンドウに表示された対象のテスト結果をダブルクリックすればよい。次の画面はそれを実際に行ったところだ。

テスト結果の詳細表示
テスト結果の詳細を表示するには、[テスト結果]ウィンドウに表示された対象のテスト結果をダブルクリックする。

6. テスト対象クラスの実装

 テスト対象クラスのメソッドを正しく実装した後に再度テストを実行すると、今度はテストが成功するはずだ。

メソッド実装後に成功したテスト
テストが成功すると、[テスト結果]ウィンドウに「成功」というテスト結果が表示される。

 自動生成されたテスト・コードはかなり冗長なので、意図を明確にするためにもリファクタリングを行うとよい。また、テスト・メソッドのメソッド名には日本語名を使用すると分かりやすいだろう。次の画面は実際にリファクタリングを行ったテスト・メソッドだ。

テスト・コードのリファクタリング
自動生成されたテスト・メソッドはVS 2005のリファクタリング機能により、その意図が明確になるように修正しておく。

7. テスト・メソッドの追加

 別のテスト・メソッドを作成するには、「TestMethod属性(Attribute)」を指定したテスト・メソッドを追加してやればよい。

 今回のテストでは、適切な例外が発生することを検証したいので、「ExpectedException属性」も指定している(次の画面を参照)。この場合、このテストを実行した際に、テスト対象のメソッドが適切な例外(この場合は、OverflowException例外)をスローしなければテストが失敗することになる。

新しいテスト・メソッドの追加
新しいテスト・メソッドを追加するには、新しく作成したメソッドに「TestMethod属性」を指定すればよい。ここでは「ExpectedException属性」を指定して、Addメソッドが正しく例外をスローするかどうかを調べるテスト・メソッドを追加している。

 テスト対象クラスのメソッドを正しく実装して再度テストを実行すれば、すべてのテストが成功するはずだ。

すべてのテストが成功
ここではcheckedキーワードを使用して、演算結果がオーバーフローしたときにOverflowException例外をスローするようにAddメソッドを修正した。これですべてのテストが成功する。
 

 INDEX
  VSTSの単体テスト機能は本当に使えるのか?
  第1回 Team Systemのテスト機能の実際
    1.自動化された単体テスト(1)
  2.自動化された単体テスト(2)
    3.コード・カバレッジ
    4.TE for Tester特有のテスト・ツール
 
インデックス・ページヘ  「VSTSの単体テスト機能は本当に使えるのか?」


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 記事ランキング

本日 月間