ライブラリ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でなくても、個人でテストする分には使えるわけだし。
明日からまたドキュメント整備やね。