チャットでbiacさんが標題のような主張をしている記事を読んだというので、少し試してみました。
1) Visual Studio 2005 Beta2を起動
2) C#のクラスライブラリのプロジェクト(とそれを入れるソリューション)を新規作成
3) ソリューションにC#のテストプロジェクトを追加
4) 初期状態で入っているテストメソッドの中身に、まだ存在しないメソッドのテストを追加
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual<int>( 3, ClassLibrary1.Class1.Sample(1, 2));
}
5) 上記のSample(存在しないメソッド)を右クリック
6) コンテキストメニューの先頭に見慣れない"メソッドスタブの生成"という項目が増えているので、これを選択
7) クラスライブラリのソースを見ると、以下のようにテストの仕様を満たすメソッドが自動的に生成されていた。
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
public static object Sample(int p, int p_2)
{
throw new Exception("The method or operation is not implemented.");
}
}
}
感想 §
せっかく型を明示するために、AreEqualに<int>を付けてみたのに、戻り値がobject型として生成されたのは残念。とはいえ、この機能そのものは、割と実用性がありそうな気がします。もっとも、この機能のためにバカ高いVisual Studio 2005 Team Systemを買うかと言われれば、絶対に無理ですが。この程度は、手で書いてもすぐだしね。
参考URL §
Visual Studio Team Edition for Software Testers での単体テストのチュートリアル