LoginSignup
1
1

More than 3 years have passed since last update.

POIの非推奨バージョンでJUnit起動時にエラー

Last updated at Posted at 2019-03-27

はじめに

とあるプロジェクトにて単体テストクラスがエラーを吐き続けていたため、原因を調査。
その時の調査過程のメモです。

発生していたエラー

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を使う、とのこと。
試しにバージョンを切り替えてみたところエラーの発生は無くなった。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1