【Java】mockitoの依存関係で詰まった話

Java
  • 色々と勘違いを起こしてしまい、起こった問題があったので備忘録
    • 同じようなケースで詰まった人がいれば、参考になれば
    • あまりないかもしれないですが(^_^;)

起こった問題

  • mockito、any()を使用してテストしようとした際、Illeagal Access Errorが起こった

解決策

  • mockito-allをbuild.gradleから削除すれば解決した
    • 依存関係をbuild.gradleする際
    • mockito-coremockito-allを一緒に使用してしまい、エラーが起きた
    • any(〇〇.class)を使用したとき、Illeagal Access Errorになった
  • mockito-allとmockito-coreの両方にany()メソッドがあり、呼び出し時に競合した関係でうまくいかなかった
    • それぞれのメソッド
    • mockito-allのany() → import static org.hamcrest.Matchers.any;
    • mockito-coreのany() → import static org.mockito.ArgumentMatchers.any;
  • mockito-allは更新が止まっており、mockito-coreは現在も更新されているライブラリ
    • なので、mockito-coreを残して、mockito-allを依存関係から削除した

経緯

mockito-all、mockito-coreを同時に使用していた理由

  • 最初調べた時、mockito-allが出てきたので、使用していた
  • staticメソッドをmockする際にmockito-coreを入れて使用していた

    → mockito-allとmockito-coreを同時に依存関係に入れていた

自分の誤解

  • mockito-coreはmockito-allをベースにして、static mockを使用する際追加するべきもの
    • 本来はmockito-coreのみでmockito-allは不要
    • mockito-allは最終更新がだいぶ古い(2014年)
    • mockito-coreは2022年4月現在も更新されているもの
    • mockito-coreはmockito-allの後継?
    • 確認する限り、mockito-allを使用せず、mockito-coreのみで問題なさそう

参考

コメント

タイトルとURLをコピーしました