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

うさがにっき

読書感想文とプログラムのこと書いてきます

Espresso2.0でNoClassDefFoundErrorへの対処法

概要

Espresso2.0でテストを実行したところ以下エラーが発生した
これへの対処法

java.lang.NoClassDefFoundError・・・

詳細

gradleの記述に問題があった
gradle.buildに記載した

androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2'

が問題を引き起こしていた

espresso-contribには以下の依存関係が含まれている

  • com.android.support:support-annotations
  • com.android.support:support-v4
  • com.android.support:recyclerview-v7
  • com.android.support.test.espresso:espresso-core

そこらへんを考えて導入しないとライブラリ同士が衝突して思わぬエラーが発生する
またsupport-annotationsにはAppCompatも含まれているため、そこの依存関係も解決する必要がある

    configurations {
        androidTestCompile.exclude group: 'com.android.support', module: 'support-annotations'
    }

esopresso-contribにはcoreへの依存が含まれているためdependenciesに記載する必要がない

dependencies {
    // You can compile without 'espresso-core'. Because 'espresso-contrib' has.
    // androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1'

また、espresso-contribにはRecyclerViewとsupportv4への依存も含まれているので、テスト時コンフリクトおこならないように設定

dependencies {
    androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.1') {
        exclude group: 'com.android.support', module: 'support-v4'
        exclude group: 'com.android.support', module: 'recyclerview-v7'
    }
    androidTestCompile 'com.android.support.test:rules:0.2'
  }

ここら辺のコンフリクトを解消すれば解決する