Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

DbUnitの弱点はBeanのListとDataSetを比較できないこと

DbUnitを使うにあたって一番問題になることは、Daoから取得したJava BeansのListとExcelの期待値を比較できないことだ。


Excel(XML)の期待値はDbUnitではDataSetとして表す。
だけど、DbUnitのAssertクラスであるorg.dbunit.AssertionクラスではDataSet同士しか比較できない。

  • assertEquals(IDataSet expectedDataSet, IDataSet actualDataSet)
  • assertEquals(ITable expectedTable, ITable actualTable)

なので、BeanのListをDataSetにするか、逆にDataSetからBeanのListを作ってList同士を比較するかのどちらかを実装する必要がある。
# もしすでにそういうライブラリがあれば教えてください。。。


僕が個人的に好きなのはS2Unitで、S2TigerのJARに含まれてるS2Assertクラスにはそういうメソッドがある。

  • assertBeanEquals(org.seasar.extension.dataset.DataSet*1 expected, List list)


この辺りのソースコードSeasarに依存してるわけでもなさそうだし、これを参考に実装させてもらおうかなあ。

*1:DbUnitのDataSetと関わりはない