无法解析符号 InstantTaskExecutorRule

Cannot resolve symbol InstantTaskExecutorRule

我打开示例代码BasicRxJavaSample(来自这篇文章Room+RxJava) 主要的是:

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();

BasicRxJavaSample 就可以了。 但我不能在我的测试中应用它。 事情是这样的:

无法解析符号 InstantTaskExecutorRule

并且手动导入不起作用:

我的自动补全功能是这样的

但应该是这样

我的应用程序 build.gradle (full gradle here):

// tests
testImplementation 'junit:junit:4.12'
androidTestCompile "com.android.support:support-annotations:$supportVersion"
testImplementation "android.arch.core:core-testing:$archVersion"
// Test helpers for Room
testImplementation "android.arch.persistence.room:testing:1.0.0"
// https://github.com/mockito/mockito
testImplementation 'org.mockito:mockito-core:2.13.0'
androidTestImplementation 'org.mockito:mockito-android:2.13.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'com.android.support.test:rules:1.0.1'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
// https://developer.android.com/topic/libraries/testing-support-library/packages.html
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:3.0.1'

请将这两个依赖项放入您的 gradle 文件中,

dependencies {

    // Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:1.0.0"

    // Test helpers for Room
    testImplementation "android.arch.persistence.room:testing:1.0.0"
}

更多信息请阅读此link, Android Architecture components integration guide

我认为某些链接库中存在冲突。 我解决了这个问题,我使用了 blockingGet()blockingFirst().

最后,我用了 https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

androidTestUtil 'com.android.support.test:orchestrator:1.0.1'

这就是你需要的!

将 testImplementation 替换为 androidTestImplementation。因此文件夹 androidTest 上的测试可以访问该库。

dependencies {
    androidTestImplementation "androidx.arch.core:core-testing:2.1.0"
}

If you are not using androidx then use android.arch.core:core-testing:1.1.1

对于 androidX 迁移,添加

androidTestImplementation "androidx.arch.core:core-testing:2.0.0"

有时,测试依赖性问题可能是选择适当构建变体的问题,具体取决于您的 Gradle 配置。就我而言,测试仅针对调试构建变体进行了配置。

我知道已经晚了,但我想向这个已接受的答案添加一件事。

如果要使用,

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
new InstantTaskExecutorRule();

在您的 JUnit 测试用例中,即在 test 文件夹中 然后使用以下依赖项,即与 testImplementation

dependencies {
testImplementation "android.arch.core:core-testing:1.0.0"
}

如果您想将 InstantTaskExecutorRule 用于 UI 或集成测试用例(androidTest 文件夹),请使用 androidTestImplementation。即:

androidTestImplementation "android.arch.core:core-testing:1.0.0"

如果你想为两者添加,请使用 androidTestImplementation & testImplementation 即:

androidTestImplementation "android.arch.core:core-testing:1.0.0"

testImplementation "android.arch.core:core-testing:1.0.0"

对于 Android-X 使用以下依赖项:

androidTestImplementation 'androidx.arch.core:core-testing:2.0.0'

测试实施'androidx.arch.core:core-testing:2.0.0'

dependencies {
    testImplementation "androidx.arch.core:core-testing:2.1.0"
}