テストメソッドからメソッドスタブを作成する
前の2つは実装済みメソッドからテストメソッドを作成しましたが、ここではその逆を行います。先にテストメソッドを作成し、そこでの呼び出し方をベースにメソッドのスタブを生成しましょう。これはテストファーストと呼ばれるプラクティスを実践するために非常に重要な機能です。VS2008まではC#でのみ利用可能でしたが、VS2010からはVBでも利用可能な機能になっています。
作成の手順
今回は、テストメソッドから実装するので、先の2つで利用していたTestProject1にあるCalculaterTestクラスにテストメソッドを記述していきましょう。今度は乗算を行うメソッドにしてみたいと思いますので、リスト9に示すようなテストメソッドを追加します。
/// <summary> ///Multi のテスト ///</summary> [TestMethod()] public void MultiTest() { Calculater target = new Calculater(); int x = 10; int y = 5; int expected = 50; //結果の期待値を設定します int actual; actual = target.Multi(x, y); Assert.AreEqual(expected, actual); //Assert.Inconclusive("このテストメソッドの正確性を確認します。"); }
リスト7に示すメソッドを作成した直後は、CalculaterクラスにMultiメソッドは存在していませんので、Multiメソッドの部分にはエラーを示す波線が表示された状態となります。ここで波線から表示できるスマートタグを開くとメソッドスタブの作成ができます。
作成はすぐに終わるので、作成先となるはずのCalculaterクラスを確認してみると図12に示すようにメソッドのひな型が作成され、まだ実装済みではないことを示す例外が設定されている状態になっています。
最後に、このメソッドに必要な処理を実装することでテストメソッドを起点とした実装メソッドの作成までの手順を実施することができました。
補足・注意事項
メソッドスタブの作成機能は実は単体テストに限ったことだけではありません。これはVSのC#用エディタに用意されている実装を手助けする一機能にすぎません。このため、C#であればテストメソッドに限らず、好きなところで利用することができます。ここでは、テストファーストというプラクティスを実践するためにテストメソッド内のテスト対象メソッドに対して利用することに意味がありました。
まとめ
今回は3つのシナリオについて、それぞれ実践する方法を確認してきました。「基本のき」ということで非常にシンプルな内容ばかりではありましたが、単体テスト機能を使いたいというよりもこんなことがしたい! またはこんなことができる! と言うところの一助になれば幸いです。次回も引き続き、いくつかのシナリオに基づいて使い方を見ていきたいと思います。どうぞお楽しみに。