ASP.NET 2.0を使って、テスト駆動開発を行いたいと考えています。
データベースの検索や更新を行うモジュールをどうやってテストするか悩んでいます。
必要なデータをあらかじめテキストファイルで作成しておき、テストの実行前に自動的にテーブルにロードされるようにしたいのですが、良い方法は無いでしょうか?
RubyOnRailsのFixtureみたいな事が出来れば嬉しいです。
理想的には、
・データ作成が簡単
・データをソースと一緒にソース管理ツールで管理できる
・DBMSになるべく依存しない
ような方法を探しています。
テストコードの例
//テスト用DBの作成 MockDb mockDb = new MockDb(); //テスト用データ(tanaka)をMockDbに追加しておく、 //MockDbは単純に追加しておいたデータをそのまま返すクラス。 Person tanaka= new Person("tanaka",28); MockRecord record = new MockRecord(); record.AddField("Name",tanaka.Name); record.AddField("Age",tanaka.Age); mockDb.AddRecord(record); //DbReaderがここでテストしたいDb検索用のクラス DbReader personReader = new DbReader(mockDb); //正しく値が取り出せているか検証 Person person = personReader.getPerson("tanaka"); AssertEquals(tanaka.Age,person.Age);
といった感じでどうでしょうか。
http://www.atmarkit.co.jp/fdotnet/tools/nunit22_02/nunit22_02_02...
http://patterns-wg.fuka.info.waseda.ac.jp/study/7th-oota.pdf
ご回答ありがとうございます。
ちょっと私の要望とは違います。
まさにテストをしたい部分が、Mockと置き換わっています。
ちなみに、1テーブルからレコード全体を1件~数件取るような単純なケースもありますが、5~10個のテーブルをJOINしたり、あるテーブルの内容に従って動的にクエリを作成したりすることもあります。
どっちかと言うと、そういうクエリが複雑な場合のテストが自動化できる事が重要です。