Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法解析符号InstantTaskExecutorRule_Android_Unit Testing_Junit4_Rx Java2 - Fatal编程技术网

Android 无法解析符号InstantTaskExecutorRule

Android 无法解析符号InstantTaskExecutorRule,android,unit-testing,junit4,rx-java2,Android,Unit Testing,Junit4,Rx Java2,我打开示例代码BasicRxJavaSample(来自本文) 主要是: @Rule public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule(); BasicRxJavaSample也可以。 但是我不能在我的测试中应用这个。 事情就是这样的: 无法解析符号InstantTaskExecutorRule 手动导入不起作用: 我的自动完成是这样工作的 但应该如此 我的应

我打开示例代码BasicRxJavaSample(来自本文) 主要是:

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();
BasicRxJavaSample也可以。 但是我不能在我的测试中应用这个。 事情就是这样的:

无法解析符号InstantTaskExecutorRule

手动导入不起作用:

我的自动完成是这样工作的

但应该如此

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


请将这两个依赖项放在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"
}
更多信息请访问此链接,

我认为一些链接库中存在冲突。 我绕过了这个问题,使用了blockingGet()blockingFirst()

最后,我用


这就是你需要的

用androidTestImplementation取代testImplementation。因此,文件夹androidTest上的测试可以访问该库

dependencies {
    androidTestImplementation "androidx.arch.core:core-testing:2.1.0"
}
如果您没有使用androidx,那么使用android.arch.core:core测试:1.1.1


对于androidX迁移,请添加

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

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

我知道已经晚了,但我想在这个公认的答案中添加一点

如果你想用

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
new InstantTaskExecutorRule();
在您的JUnit测试用例中,即在测试文件夹中然后使用以下依赖项,即使用测试实现

dependencies {
testImplementation "android.arch.core:core-testing:1.0.0"
}
如果要对UI或集成测试用例(androidTest文件夹)使用
InstantTaskExecutorRule
,请使用androidTestImplementation。即:

androidTestImplementation“android.arch.core:核心测试:1.0.0”

如果您想同时添加这两个选项,请使用androidTestImplementation&testImplementation,即:

androidTestImplementation“android.arch.core:核心测试:1.0.0”

testImplementation“android.arch.core:核心测试:1.0.0”

对于Android-X,请在依赖项下方使用:

androidTestImplementation'androidx.arch.core:核心测试:2.0.0'


testImplementation'androidx.arch.core:core testing:2.0.0'

我已经做了上述更改,但是这个解决方案在我的案例中不起作用。还有其他可能性吗?@Kavita_p I将
androidTestImplementation
更改为
testImplementation
,然后解决了问题,在提供依赖项后,workedIf不起作用。手动添加
导入androidx.arch.core.executor.testing.InstantTaskExecutorRule
这将是最好的答案感谢您指出@Kavita\u p。。。。安卓系统大多是疯狂的,而且对开发者不友好。如果系统需要在仪器测试和单元测试中具有依赖性,则应定义testImplementation和androidTestImplementation。。。我想知道,谷歌什么时候会让所有这些都变得对开发者友好。。!!!!我发现IOS开发对开发者更加友好。。。这些想法真的很糟糕……但如果您使用实现,这个库代码将出现在您的发布版APK中。这是不必要或不正确的。如果你想在两者上都使用,你应该同时使用androidTestImplementation和testImplementation。嗨,@PauloPereira谢谢你的输入。是的,关于在发布APK中包含这些LIB,您是对的。我也会更新我的答案。最新的版本信息可以在这里找到-
dependencies {
    testImplementation "androidx.arch.core:core-testing:2.1.0"
}
dependencies {
testImplementation "android.arch.core:core-testing:1.0.0"
}
dependencies {
    testImplementation "androidx.arch.core:core-testing:2.1.0"
}