dbunitng (0.6) | 2008-10-02 16:31 |
AssertionHelperクラスを使えばラクにアサートすることができます。
単に内部ではリストをデータセットに変換して、ファイルと比較してるだけです。
getClass()してるのは、ファイルをテストクラスと同じパッケージから探すためです。
テストクラスが「aaa.bbb.ccc.HogeTest」であれば、「aaa/bbb/ccc/dept.xml」を読み込みます。
メソッド名のとおり、ファイルに記述したカラムのみ比較します。
たとえば、BeanであるDeptクラスにこういうプロパティがあるとします。
updateDateは更新日付と考えましょう。
一方、XMLはこういう記述です。
updateDateはありません。
なので、アサートではdname,deptno,locationのみ比較します。
DbUnitのデフォルトでは、こういうカラムが異なる場合、アサートが失敗してしまいます。
自分でDefaultColumnFilter.includedColumnsTable()とかexcludedColumnsTable()とかしないといけない。
なのでAssertionHelperに組み込んでおきました。
もちろん通常のDbUnitのアサートをしたいときは、普通にDbUnitのAssertionクラスを利用すればいいわけです。
DbUnitで期待値をXMLやExcelに記述すると思うけど、 日付の書式は基本的にDate.valueOf()やTimestamp.valueOf()で有効な書式を記述する。
試したけど、java.util.Dateでもjava.sql.Dateでも次の2つのパターンが有効。
[null]と記述すると、nullとして扱います。
AssertionHelperクラスを使ってアサートする場合です。
内部的にはReplacementDataSetを使っています。