You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Espresso测试无法访问类文件,报‘包不存在’等错误求助

解决Android Testing Code Lab Module 7的Espresso测试编译错误

你在运行Espresso UI测试时碰到的这些编译错误,核心问题是测试代码的依赖被错误地强制排除,再加上几处配置冲突,导致测试类找不到必要的类文件。下面是具体的分析和修复步骤:

错误原因拆解

从你的build.gradle配置来看,最后那段自动排除依赖的代码是主要诱因:

configurations.compile.dependencies.each { compileDependency ->
    println "排除编译依赖项: ${compileDependency.getName()}"
    configurations.androidTestCompile.dependencies.each { androidTestCompileDependency ->
        configurations.androidTestCompile.exclude module: "${compileDependency.getName()}"
    }
}

这段代码会把compile配置里的所有依赖(比如support-v4、support-v7、guava)都从androidTestCompile中排除,而这些恰恰是测试代码必须用到的库——这就直接导致了AppCompatActivity、RecyclerView、checkArgument这类符号找不到的错误。

另外,你在android块里重复设置了buildToolsVersion,先使用root配置的25.0.2,又手动改成26.0.2,这也可能引发编译工具版本不一致的冲突。

具体修复步骤

1. 删除错误的依赖排除代码

直接删掉那段自动排除依赖的代码块,它完全是画蛇添足,反而破坏了测试依赖的正常引用逻辑。

2. 统一Build Tools版本

把android块里重复的buildToolsVersion '26.0.2'删掉,保持和root配置一致的25.0.2,避免版本冲突干扰编译。

3. 调整Espresso Contrib依赖(可选但推荐)

espresso-contrib经常会引入和项目版本不一致的support库,建议在依赖声明时主动排除冲突模块,修改androidTestCompile里的espresso-contrib:

androidTestCompile ("com.android.support.test.espresso:espresso-contrib:$rootProject.ext.espressoVersion") {
    exclude group: 'com.android.support', module: 'appcompat-v7'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.android.support', module: 'design'
    exclude group: 'com.android.support', module: 'recyclerview-v7'
}

这样可以避免Espresso自带的support库和你项目中的版本冲突。

4. 同步Gradle并重新测试

做完以上修改后,点击Android Studio的Sync Project with Gradle Files按钮,同步完成后再重新运行你的UI测试,编译错误应该会全部消失。

修改后的核心依赖配置示例

调整后的dependencies和configurations部分应该类似这样:

dependencies {
    // 应用核心依赖
    compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    compile "com.android.support:design:$rootProject.supportLibraryVersion"
    compile "com.android.support:recyclerview-v7:$rootProject.supportLibraryVersion"
    compile "com.android.support:support-v4:$rootProject.supportLibraryVersion"
    compile "com.google.guava:guava:$rootProject.guavaVersion"
    compile "com.github.bumptech.glide:glide:$rootProject.glideVersion"
    compile "com.android.support.test.espresso:espresso-idling-resource:$rootProject.ext.espressoVersion"

    // 本地单元测试依赖
    testCompile "junit:junit:$rootProject.ext.junitVersion"
    testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
    testCompile "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion"
    testCompile "org.powermock:powermock-module-junit4:$rootProject.ext.powerMockito"
    testCompile "org.powermock:powermock-api-mockito:$rootProject.ext.powerMockito"

    // Android测试支持库
    androidTestCompile "com.android.support.test:runner:$rootProject.ext.runnerVersion"
    androidTestCompile "com.android.support.test:rules:$rootProject.ext.rulesVersion"

    // Espresso UI测试依赖
    androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.ext.espressoVersion"
    androidTestCompile ("com.android.support.test.espresso:espresso-contrib:$rootProject.ext.espressoVersion") {
        exclude group: 'com.android.support', module: 'appcompat-v7'
        exclude group: 'com.android.support', module: 'support-v4'
        exclude group: 'com.android.support', module: 'design'
        exclude group: 'com.android.support', module: 'recyclerview-v7'
    }
    androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.ext.espressoVersion"
}

// 锁定support-annotations版本,避免冲突
configurations.all {
    resolutionStrategy.force "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
}

内容的提问来源于stack exchange,提问作者TheDancerCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:42:25