S2Daoの結果をS2Unitでテスト
メモ。
RELNOアノテーションのプロパティ名でgroupを指定すると…
S2DaoでN:1マッピングをするとき、1側のBeansに「group_RELNO, setGroup(), getGroup()」のようにgroupプロパティを指定したら、
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はjava.sql.SQLException: Unexpected token GROUP, requires ON in statement [省略 at org.seasar.framework.util.ConnectionUtil.prepareStatement(ConnectionUtil.java:38) 〜(省略)〜 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: java.sql.SQLException: Unexpected token GROUP, requires ON in statement [省略
と怒られた。「hogeGroup_RELNO, setHogeGroup(), getHogeGroup()」のようにプロパティ名を一通り変更すると普通に動く。
groupが予約語なのか?Hsqldb。
空シートは削除
readXls()使うとき、Excelファイル上で余計なシートは削除する必要がある。
デフォルトで作成される空シートがあるとNullPoinerExceptionが発生してしまう。
DataSetでassertBeanEquals()をするときはS2DaoTestCaseで
N:1マッピングのときにS2UnitでreadXls()を使うとき、N側のカラム名をhoge_0のようにExcelに書くと、
org.seasar.extension.jdbc.ColumnNotFoundRuntimeException: [ESSR0068]テーブル(Bean)のカラム(hoge_0)が見つかりません at org.seasar.extension.dataset.impl.DataTableImpl.getColumn(DataTableImpl.java:128) 〜(省略)〜
となってしまう。どうやってテストすりゃいいんじゃい。
と思ってたら自己解決。
S2TestCaseじゃなくて、S2DaoTestCaseをextendsしなきゃいけなかったのね。
BeanListでassertするときはassertBeanListEquals()メソッドで
findAll()みたいなBeanListを返すメソッドのテストで、期待値は3つなのに1つしかないと言い張る。
ソースを調べて気がついた。assertBeanEquals()で比較してたのが原因。
BeanListの場合はassertBeanListEquals()なのでした…。