はじめに
とあるプロジェクトにて単体テストクラスがエラーを吐き続けていたため、原因を調査。
その時の調査過程のメモです。
発生していたエラー
SLF4J: Failed toString() invocation on an object of type [org.apache.poi.hssf.usermodel.HSSFRow]
java.lang.AssertionError: hashCode not designed
at org.apache.poi.hssf.usermodel.HSSFRow.hashCode(HSSFRow.java:704)
at java.lang.Object.toString(Object.java:236)
:
:
上記エラーのため、デバックログの出力に失敗していた。
(それでもテストクラスの実行はできてた)
エラー発生箇所を見てみる
エラーが起きているHSSFRow.javaを見てみる
702: @Override
703: public int hashCode() {
704: assert false : "hashCode not designed";
705: return 42; // any arbitrary constant will do
706: }
どうやらhashCodeメソッドが呼ばれるとAssertionErrorが発生する実装になっている様子。
ライブラリのバージョンを確認してみた
少し悩んでとりあえず各ライブラリのバージョンを確認してみることに。
- DBUnit:2.5.1
- POI:3.12
↑のバージョンが正しいのか調べるためGoogle先生に聞き込み。
(DBUnitを使用した結合試験データの積み込みの記事を参考にさせて頂きました。)
POIが推奨されるバージョンではなかった
参考にさせて頂いた記事によると、POIのバージョンは3.2-FINALを使う、とのこと。
試しにバージョンを切り替えてみたところエラーの発生は無くなった。