石井と申します.
> ・ setUpメソッドで、DBの初期化をする。
> テストデータが必要ならそれも突っ込んでおく。
>
> ・ tearDownできれいさっぱりテストデータを消去する。
>
> ・ テストメソッドごとにデータを変えたいならメソッド側で
> テストデータの追加と削除をする。
>
> void testXXX () {
> テストデータの追加;
> テスト;
> テストデータの削除;
> }
>
> な感じ?
僕も昔そんな感じで開発していましたが,テーブル数が多い場合やデータベー
スをみんなで共有している場合は難しいと思います.
以前Oracleを使ったシステムでテストコードを書いていたときは次のようにし
ていました.
1) データベースのマスターユーザ(例えばmaster)を作る.
2) 開発者ごとにデータベースのユーザ(例えばmishii)を割り当てる
こうして,データベースのmasterユーザでテーブルを定義し,必要ならマスター
系テーブルのデータを入れておきます.ここまではデータベース管理者の仕事
です.
そうした後,あるテーブル(例えば tableA)が空の場合のテストをしたいと
きは次のようにします.
1) ユーザmishiiでデータベースにログイン
2) setUpでmaster.tableAを利用してmishii.tableAを作成
==> create table tableA as select * from master.tableA where 1 = 0;
3) tableAが空の場合のテストを実行
4) tearDownでmishii.tableAを削除
==> drop tableA
こうすれば,他の開発者に影響を与えずにテストすることができます.
ユーザmishiiからみると,tableA はmaster.tableAではなくmishii.tableAに
見え,tableBはそのままmaster.tableBに見えることを利用した方法です(ユー
ザの概念はOracleだけかもしれないですが).テストでtableBを更新するなら,
mishii.tableBを作っておいたほうがいいかもしれませんね.
後は,テーブルのセットアップをするためにSQLスクリプトを書いておいて
setup時にそれを読み込む処理を行ったりしていました.
以上,参考になれば.
---
石井