VSTSデータ駆動ユニットテストとExcelファイル

VSTSのデータ駆動ユニットテストを調べていたらExcelファイルに定義したテストデータから単体テストを行うやりかたが紹介されていました。

元ネタ MSDN2
http://msdn2.microsoft.com/ja-jp/library/ms243192(VS.80).aspx

元ネタだけではわかりづらいので、まとめておきます。

1. Excelでテストデータを作成
1行目が列名、2行目以降がテストデータとなります。

2. データ駆動ユニットテストのコードを記述
テストメソッドにDataSouce属性を付加しデータ駆動ユニットテスト機能を利用したテストメソッドであることを宣言します。接続文字列にODBCを利用してExcelに接続する設定を記述し、テーブル名代わりにシート名を記述します。
MSDN2どおりにやってみたのですが、パスが参照できないといったエラーがでてうまく接続できなかったので接続文字列のDBQをフルパスで記述しました。

[TestMethod]
[DataSource(
    "System.Data.Odbc", 
    "Dsn=Excel Files;DBQ=D:\\Sample\\VstsTestProject\\VstsTestProject\\TestData\\CalcData.xls;driverid=790;maxbuffersize=2048;pagetimeout=5;", 
       "足し算$", 
       DataAccessMethod.Sequential)]
public void 足し算のテスト()
{
   int val1 = int.Parse(TestContext.DataRow["Val1"].ToString());
   int val2 = int.Parse(TestContext.DataRow["Val2"].ToString());
   int result = int.Parse(TestContext.DataRow["Result"].ToString());

   Assert.AreEqual<int>(result, val1 + val2);
}

ちなみに上記コードは、TestContextプロパティは省略してますのでご注意を。
後は実行すれば完了です。

今まではDBを使ってデータ駆動ユニットテストを行っていましたが、Excelファイルのほうが管理も簡単で良いですね。DBのテーブルも作成する必要ないし。データ駆動ユニットテストを使う場合はお勧めです。