Fight the Future

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

DbUnitNG0.2リリース!

テストケースの追加と、バグを修正しました!
DbUnitNG プロジェクト日本語トップページ - SourceForge.JP
AssertionHelperクラスを使えばラクにアサートすることができます。

List<Dept> deptList = deptDao.listAllDept();
AssertionHelper.assertEqualsOnlyColumnsInFile(
	deptList,
	getClass(),
	"dept.xml");

単に内部ではリストをデータセットに変換して、ファイルと比較してるだけなんですけどね。
getClass()してるのは、ファイルをテストクラスと同じパッケージから探すためです。
テストクラスが「aaa.bbb.ccc.HogeTest」であれば、「aaa/bbb/ccc/dept.xml」を読み込みます。


メソッド名のとおり、ファイルに記述したカラムのみ比較します。
たとえば、BeanであるDeptクラスにこういうプロパティがあるとします。

  • dname
  • deptno
  • location
  • updateDate

updateDateは更新日付と考えましょう。
一方、XMLはこういう記述です。

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
	<DEPT DEPTNO="10" DNAME="ACCOUNTING" LOCATION="NEW YORK" />
	<DEPT DEPTNO="20" DNAME="RESEARCH" LOCATION="DALLAS" />
	<DEPT DEPTNO="30" DNAME="SALES" LOCATION="CHICAGO" />
	<DEPT DEPTNO="40" DNAME="OPERATIONS" LOCATION="BOSTON" />
</dataset>

updateDateはありません。
なので、アサートではdname,deptno,locationのみ比較します。


DbUnitのデフォルトでは、こういうカラムが異なる場合、アサートが失敗してしまいます。
自分でDefaultColumnFilter.includedColumnsTable()とかexcludedColumnsTable()とかしないといけない。
なのでAssertionHelperに組み込んでおきました。
もちろん通常のDbUnitのアサートをしたいときは、普通にDbUnitのAssertionクラスを利用すればいいわけです。