読者です 読者をやめる 読者になる 読者になる

DbUnitをApache POI3.8互換にする

昨日のつづき。修正箇所はそこまで多くなかったので、自前で修正してjarを作ることにした。

DbUnitが依存するApache POIを最新の3.8にしてNoSuchMethodErrorを回避する方法。

org.dbunit.dataset.excel.XlsTable

org.apache.poi.ss.usermodel.DateUtilをimportして、153行目あたりの

if (HSSFDateUtil.isCellDateFormatted(cell))

を、

if (DateUtil.isCellDateFormatted(cell))

に直す。

org.dbunit.dataset.excel.XlsDataSetWriter

101行目あたりの

cell.setCellValue(new HSSFRichTextString(column.getColumnName()));

cell.setCellValue(column.getColumnName());

に直す。

DbUnitMavenプロジェクトなので、pom.xml中のpoiの依存バージョンを3.2-FINALから3.8に修正して、mvnでビルドすればOK(なぜかojdbc14-10.2.0.4.0.jarだけダウンロードできなかった。Oracleは使う予定がないし、別途ダウンロードしてローカルリポジトリに放り込んで回避)

これで、mvnのテストも全てpassして、今までのDbUnitを使ったDaoのテストも通るようになった。2つ目の修正は正しいかどうか微妙なところなんだけど…。