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