[seasar-dotnet:1231] DBFlute:ReplaceSchemaでの開発方法について

小林貴生 [E-MAIL ADDRESS DELETED]
2008年 12月 18日 (木) 20:33:25 JST


いつもお世話になっております。
小林(質問者)です。


さて、現在悩んでいることがあります。

それは、「DBを絡めたユニットテストの初期データをどうするか。」
と言うことです。

以前やった(やらかした)失敗としては、
1.DBを絡めたユニットテストを実装。
2.自分の知らない間にDBのテーブル内容が変わった。
3.自分の知らない間に通らないテストがいっぱい出来てしまった。
4....もうテストする気もしない。もう書かない。(プログラマの反乱)
の様なことがありました。
上記の経緯があり、その時の自動テストの野望は露と消えてしまったのです。


今度、新しいプロジェクトを始めるので、反省点も踏まえて考えていこうと思っています。

現在は、
案1.S2UnitのExcelデータ取込機能
案2.ReplaceSchemaでのテストデータ用意
のどちらかで、ユニットテスト時の初期データの用意をしたいな。と。

で、今使おうと思っているのは、「S2UnitのExcelデータ取込機能」の方です。
理由は、「各テスト毎に初期データがある方が分かりやすいのかな。」と言う
簡単な理由なのですが、どうでしょうか?。
テストソースと同じフォルダにエクセルがあると見やすいのかなぁ、と。


うちの開発案件に良くあるのが、テーブルの内容が変わっていくことです。

例えば、
1.実績テーブルを作成:初期テストデータとして10レコードデータ作成。
2.その10レコードについてのテストAを書く。通る。
3.実績テーブルに何かしら区分カラムが追加(仕様変更):その区分の有り無しで計20レコードデータ作成。
4.その20レコードについてのテストBを書く。通る。

とやったときに、
「S2UnitのExcelデータ取込機能」なら、それぞれにエクセルデータが用意されているので、
テストAも、テストBもエラーにならなくて済むのでは?。
と考えたのです。

「ReplaceSchema」だと、20レコードに増やした時点で、
テストAが通らなくなってしまうのでは?。...と思うのですけど...。
その時で、テストAを書き直すのでしょうか...けど、テスト数が多いとそれも大変そうですよね...。


もちろん、開発上の工夫をすることによって、上記のような事柄は起こらないように
されていると思うのですが、よろしければその方法を教えていただけないでしょうか?。


DBFluteを使わせてもらい始めた時から、出来れば「ReplaceSchema」でやりたい!。
と思っています。

良い方法と言うか、「ReplaceSchema」での当たり前の事でも良いので教えていただければと思います。
不躾な質問ですいません、よろしくお願いいたします。



以上、よろしくお願いいたします。

小林貴生



seasar-dotnet メーリングリストの案内