DbUnitのつづき
他にもこんなことができるっぽいメモ。
あんまり余裕がないので走り書き。
前処理・後処理の動作を変更する
デフォルトだと、
- 前処理:getDataSetで指定したテーブルのデータを全削除し、データを入れる。
- 後処理:何もしない。
となっているが、この動作を変更できる。
変更する方法は、テストケースでgetSetUpOperation, getTearDownOperationを
オーバーライドし、好きなDatabaseOperationを返却するだけ。
データをソートしてから検証する
DbUnitでDBからデータを取得すると、PKeyの昇順になるので、
期待値のデータもソートしておかないと検証で失敗してしまう。
そんな時は、SortedTableを使ってどちらのデータもソートしてから
検証すると、うまくいくらしい。
特定のカラムを除外して検証する
DefaultColumnFilterを使うと、シーケンスのカラムなど、特定のカラムを除外したり、
逆に対象としたりできる。
IDataset(ITable)を複数合わせて検証する
CompositeDataSetやCompositeTableを使うと、複数のIDataSet(ITable)を組み合わせる
ことができる。期待値用ファイルは新規に登録されるデータのみを記述しておき、
事前状態+期待値ファイルを期待値とすれば、期待値用ファイルの作成が少しだけラクになる。
DatabaseTestCaseを継承しないで使う
DatabaseTestCaseはIDatabaseTesterにほとんどの処理を任せているだけなので、
DatabaseTestCaseのsetUpとかtearDownあたりをコピペすれば、
DatabaseTestCaseを継承しなくても同じ動作をさせることができる。
他のテストケースクラスを継承しなければならないときは、この方法を利用する。
IDatabaseTesterはデフォルトだとDefaultDatabaseTesterクラスで、
JNDI用だとかDataSource用といったJDBCのConnectionの取得元別に
いくつかTesterが用意されている。