DBUnit

デフォルトではDatabaseTestCase#closeConnection() で毎イベントごとにコネクションをcloseしている。つまりトランザクションを続けたいならオーバーライドすればよい。
なんで切れるんやろ?って、けっこう悩みました。
ってか、クリーン・インサート後にDBみても値が変わっていないのはロールバックしてんのか?なんか根本的に間違っているのか?

dW : Java technology : DbUnitとAnthillによるテスト環境の制御 http://www-6.ibm.com/jp/developerworks/java/040528/j_j-dbunit.html
だと、
DatabaseOperation.CLEAN_INSERT.execute(connection,getFlatXmlDataSet(tableName));
とやっている。
オレの場合はDatabaseOperation.CLEAN_INSERT をreturnして、初期データを定義しているgetDataSet()が呼ばれることを期待したのだが…なんか違ってたみたい、なのか。
一番シンプルなパターンだと上手くいくのに、setupとか付けていくと動かなくなってしまった。全部オーバライドすりゃフレームワークのコールシーケンスは関係ないみたいなんだけど、「正しいやり方」ってのを知ろうとして時間がかかってしまった。

org.dbunit.DatabaseTestCase.java 読めば書いてあるっちゅーの。