android 无法解析符号InstantTaskExecutorRule

v2g6jxz6  于 2023-01-07  发布在  Android
关注(0)|答案(9)|浏览(179)

我打开示例代码BasicRxJavaSample(来自本文Room+RxJava)主要内容如下:

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();

BasicRxJavaSample都很好,但是我不能在测试中应用它,这就是现在的情况:

无法解析符号即时任务执行器规则

并且手动导入不起作用:

我的自动补全功能如下所示
但应该如此

我的应用构建版本.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'
4sup72z8

4sup72z81#

将testImplementation替换为androidTestImplementation。这样文件夹androidTest上的测试就可以访问库。

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

如果您使用的不是androidx,请使用android.arch.core:core-testing:1.1.1

xzlaal3s

xzlaal3s2#

我知道现在很晚了,但我想对这个公认的答案补充一点。
如果你想用,

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
new InstantTaskExecutorRule();

JUnit测试用例中,即在测试文件夹中,则使用以下依赖项,即与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 '安卓系统核心:核心测试:2.0.0'

    • 或**

测试实现'androidx. arch. core:核心测试:2.0.0'

voase2hg

voase2hg3#

对于androidX迁移,添加

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

qaxu7uf24#

请将这两个依赖项放入您的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"
}

更多信息请访问此链接Android Architecture components integration guide

bihw5rsg

bihw5rsg5#

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

ffdz8vbo6#

我认为在一些链接库中存在冲突。我使用了**blockingGet()blockingFirst()**来解决这个问题。
最后,我使用了https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator

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

这就是你需要的!

dba5bblo

dba5bblo7#

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

aelbi1ox

aelbi1ox8#

从'androidTestImplementation 'androidx.arch.core:core-testing:1.0.0'更改为2.0.0不知何故神奇地解决了我的问题。
估计是因为我用的是androidX。

ggazkfy8

ggazkfy89#

在我的情况下,我这样使用。

implementation 'androidx.arch.core:core-testing:2.1.0'

testImplementation更改为implementation
我正在使用Android Studio海豚|2021.3.1补丁1.

相关问题