くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

Espresso使用時の個人的注意ポイント

Android開発でテストを行おうと思い、Espressoを実行しようと思ったら実装とテストのバージョン違いでつまずいたので、まとめたいと思います。

テストを実行しようと思うと下記エラーが発生しました。

Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (27.0.0) and test app (27.1.1) differ.

アノテーションの定義なんてしたかなあと思いながら、app/build.gradleを見てみると、定義していませんでした。

dependencies {
    implementation 'io.realm:android-adapters:2.1.1'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:27.0.0'
    implementation "org.jetbrains.anko:anko-common:$anko_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test:rules:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:appcompat-v7:27.0.0'
}

あれれ....なんで入っているんだろうと思いながら、gradlew app:dependenciesをターミナルでたたいてみると、なんと入っていました。 設定していないのに参照していました。

androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.android.support.test.espresso:espresso-core:3.0.2
|    +--- com.android.support.test:runner:1.0.2 (*)
|    +--- com.android.support.test.espresso:espresso-idling-resource:3.0.2
|    +--- com.squareup:javawriter:2.1.1
|    +--- javax.inject:javax.inject:1
\--- com.android.support:support-annotations:27.1.1

なので、下記設定を追加して、実装とテストのバージョンを合わせました。

implementation 'com.android.support:appcompat-v7:27.0.0'

もしくは対象のモジュールを除外すれば問題ないです。

androidTestCompile('com.android.support.test:runner:0.5') {
        exclude group: 'com.android.support', module: 'support-annotations'
}
androidTestCompile('com.android.support.test:rules:0.5') {
    exclude group: 'com.android.support', module: 'support-annotations'
}

参照

Conflict with dependencyエラーについて