VS2005 TS データ駆動ユニットテストとやら

VS2005のデータ駆動ユニットテストやらを試してみました。
検証した流れを載せておきます。

1. データベース作成
データベースはOLEDBで接続できれば何でもOKです。
DBじゃなくてCSVファイルを使うのもアリですね。

2. テーブル作成
テーブルスキーマは特に決まってないですが、私は下記のようなテーブル作ってみました。
フラットなテーブルで作る点がポイントですね。


CREATE TABLE [dbo].[HelloWorldTestCase](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [result] [nvarchar](50) COLLATE Japanese_CI_AS NULL,
 [var1] [int] NULL,
 [var2] [nvarchar](50) COLLATE Japanese_CI_AS NULL
) ON [PRIMARY]

3.テストデータ作成
作成したテーブルにテストデータを投入します。
こんな感じで。


id, result, var1, var2
--------------------------------------
1, "Hello", 1, "Hello"
2. "World", 2, "World"

4.ユニットテスト作成
ユニットテストを作成します。
普通のユニットテストに加えて、TestContextプロパティを
追加することとDataSource属性を使用します。
今回はSQL Serverを使ったので、SqlClientを指定し
接続文字列を渡しています。後はテーブル名と
シーケンシャルアクセスかランダムアクセスの指定です。


--------------------------------------
    [TestClass]
    public class DataDrivenUnitTest
    {
        private TestContext testContextInstance;

        public TestContext TestContext
        {
            get { return testContextInstance; }
            set { testContextInstance = value; }
        }

        [TestMethod]
        [DataSource("System.Data.SqlClient", "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=DataDrivenUnitTest;", "HelloWorldTestCase", DataAccessMethod.Sequential)]
        public void HelloWorldメソッドを呼び出す()
        {
            int testCaseId = (int)TestContext.DataRow["id"];
            string result = (string)TestContext.DataRow["result"];
            int var1 = (int)TestContext.DataRow["var1"];
            string var2 = (string)TestContext.DataRow["var2"];

            TargetClass target = new TargetClass();
            Assert.AreEqual( result, target.HelloWorld(var1, var2) );
        }
    }
--------------------------------------

5. テスト実行
テストを実行すると、作成したテストデータ数の回数分、テストメソッドが呼び出されます。
全部のパターンのテストデータが正常に完了したらテスト完了となります。
最初動きがわからずに、1万件ぐらいデータ件数があるテーブルに接続しちゃったんで、
テストが全く動きませんでした(^^;;

 

... とこんな感じです。
これを使えるうまいシナリオがちょっと浮かばない感じです。微妙な感じですね。
DBの接続先は、テスト実行時にテストメソッドのプロパティで変更できるので、
使い道はいろいろあるかと思います。
良いアイデアが浮かばないなぁ...