Fight the Future

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

DbUnitライブラリでネストしたBeanをDateSetに変換できます

ライブラリDbUnitNGで、
ネストしたBeanをDbUnitのデータセットに変換できるように対応しました。
ネストしたBeanとは次のようなことを意味してます。


あるBeanのプロパティとして、

  • 別のBeanを持つ
  • 別のBeanをListで持つ
  • 別のBeanを配列で持つ

テストコードも記述して、コミットしています。


ネストしたBeanをどんなDataSetにしているかというと、Beanの型ごとにDbUnitのテーブルとしています。
つまりこういうクラス

public class SampleListBean implements Serializable {

	private String name;

	private List<SampleNestedBean> list;
	// setter and getters...
}

があると、データセットはこうなります。

  • SampleListのテーブル
  • SampleNestedBeanのテーブル

SampleListBeanのリストをデータセットに変換すると、各要素が持つNestedBeanはすべて同じテーブルになります。


たとえば、SampleListBeanのリストがこうだとします。

List
  -SampleListBean1
    -NestedBean1
    -NestedBean2
    -NestedBean3
  -SampleListBean2
    -NestedBean4
    -NestedBean5

これをデータセットに変換すると、次のXMLで記述したデータセットと等価になります。

<dataset>
	<samplelistbean name="SampleListBean1" />
	<samplelistbean name="SampleListBean2" />

	<samplenestedbean name="NestedBean1" />
	<samplenestedbean name="NestedBean2" />
	<samplenestedbean name="NestedBean3" />
	<samplenestedbean name="NestedBean4" />
	<samplenestedbean name="NestedBean5" />
</dataset>

SampleListBeanとNestedBeanは別のテーブルになりますし、その結果アサーションも別に行うことができます。


けっこう便利なんじゃないかなー。
これでDAOの戻り値とかアサーションできるし。
DbUnitアノテーションを使えば、Clean Insertも簡単にできる。
たとえプロジェクトがJava5でなくても、個人でテストする分には使えるわけだし。


明日からまたドキュメント整備やね。