Android Espresso 测试“无法解析符号 'InstrumentationRegistry'”

Android Espresso testing 'Cannot resolve symbol 'InstrumentationRegistry''

我正在尝试导入

 import android.support.test.InstrumentationRegistry;

我的build.gradle文件

androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test:runner:0.2'
androidTestCompile 'com.android.support.test:rules:0.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

在默认配置中:

defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

这里有我缺少的图书馆吗?我正在尝试导入 InstrumentationRegistry 但它无法识别!

检查您使用的是哪种测试。

InstrumentationRegistry 用于仪器化测试 使用模拟器或设备并将它们放置在 src/androidTest 中并使用配置 androidTestCompile.
如果您使用文件夹 src/test 中的 JVM 本地单元测试,您应该使用 配置测试编译

testImplementation 'com.android.support.test:runner:1.0.2'

之后您可以导入 InstrumentationRegistry,但您会在 运行 时遇到其他错误。

尝试

编译'com.android.support.test:runner:0.2'

而不是

测试编译'com.android.support.test:runner:0.2'

似乎,com.android.support.test 最近被排除在其他一些软件包之外(不知道是哪个),这也导致 android.support.test.InstrumentationRegistry 不为人知;不排除它 com.android.support.test:runner 为我解决了这个问题。

androidTestImplementation ("com.android.support.test:runner:1.0.2") {
    // exclude group: "com.android.support.test"
    exclude group: "com.android.support"
}

基本上,androidTestImplementation需要包含一次com.android.support.test

另一种选择 - 您还可以在 class InstrumentedRegistry 所在的位置添加 androidx.test:monitor 依赖项。

androidTestImplementation 'androidx.test:monitor:x.y.z'