DbUnit

いまさらだけど、初めてDbUnitに触ったので走り書きメモ。


JUnitのテストケースを回帰テスト用に作成する場合、DBにアクセスするクラスは、
DBのデータも常に同じ状態にしなければならない。また、テスト対象実行後に
のDBの状態を確認するときなんかも、テストケースでいちいちSQLなんて発行してられない。
こんなときにDbUnitを使うと、ラクができる。


使い方もそんなに難しくなくて、DatabaseTestCaseというのを継承して、
2つのメソッドを実装するだけ。


public class HogeTest extends DatabaseTestCase {
protected IDatabaseConnection getConnection() throws Exception {
Connection conn = ・・・;
return new DatabaseConnection(conn);
}
protected IDataSet getDataSet() throws Exception {
return new XlsDataSet(new File("hoge.xls"));
}
}
こうすると、テストメソッドの実行前にgetDataSetで返却したデータをDBに入れてくれる。
渡すデータはXMLとかExcelとかで外部ファイルに記述できる。
getConnectionで返却するIDatabaseConnectionは、普通のConnectionでなくデータソースなんかも利用できる。


DBの状態を取得する際は、IDatabaseConnection#createDataSetを使い、
検証メソッドは、org.dbunit.Assertion#assertEqualsを使う。
IDataSetごと検証してもいいけど、ITable(IDataSetから取得できる)でとあるテーブルだけを
検証することもできる。




うーん、機能的にはいい感じかも。
ソースコードもけっこう読みやすい。