Mockito でテストしようとして java.lang.NoClassDefFoundError になる場合 – Android

先月JUnit勉強会を開催しまして、

JUnit勉強会 in 松山 – “REVIVAL” #season1

その時に仕掛ったモックをあらためて使おうとしたところ、
“java.lang.NoClassDefFoundError”
となって先に進めない状況が続いていました。

開発環境は、Googleが提供しているADT-Bundle版です。

Get the Android SDK

結局、ビルドパスの設定でMockitoをライブラリに追加したのが良くなかったようです。

例えば、

  • テスト対象: TipsCalendar
  • テストプロジェクト: TipsCalendarTest

の場合。

テスト対象プロジェクトが指定されていること。
javabuildpath-project

ターゲットのAPIとその依存関係が指定されていること。
javabuildpath-library
※ここに手作業でmockito-all-1.9.5.jarを追加するとタイトルのエラーになりました。

ビルドパスを編集するのではなくて、テストプロジェクトに libs フォルダを作成してその中に、

  • mockito-all-1.9.5.jar
  • dexmaker-1.0.jar
  • dexmaker-mockito-1.0.jar

これらのファイルをコピーすればOKでした。