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が用意されている。