Fight the Future

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

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

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と関わりはない