DBUnitをJUnit4で使う、というかJUnit4の@Ruleは便利という話

DBUnit と JUnit4を組み合わせて使ってみました。

org.dbunit.DatabaseTestCase のsetUpメソッド辺りを読むとわかるのですが、Testクラスに継承されるクラスは、ほとんどの処理をIDatabaseTesterに移譲しています。

JUnitのテストケースのsetUpメソッド内で、IDatabaseTestCase.onSetup() を、tearDown内でonTearDown()を呼ぶ感じです。

あとは、その際の挙動に関する設定をsetしていっているイメージです。

なので、同じことをJUnit4では、@Beforeや、@Afterがついているメソッドで同じようなことをやってあげればいいわけですが、大量のテストクラスに全部書くのは面倒なので共通化したい。

というわけで、ExternalResourceを作ってみました。



こんな感じ。

使い方はJavadocにチラッと書いてあるとおり、@Ruleをつけてフィールドとして宣言します。
コンストラクタの引数は、設定です。詳細はDBUnitを参照してください。


コメント