强制转换异常 - AndroidJUnitRunner 无法强制转换为 RoboMonitoringInstrumentation

Fan*_*dez 2 android android-testing

致力于 Android Instrumented Test 来启动和测试此片段

在此输入图像描述

但我正在遇到这个令人讨厌的错误。

java.lang.ClassCastException: androidx.test.runner.AndroidJUnitRunner cannot be cast to org.robolectric.android.fakes.RoboMonitoringInstrumentation
at org.robolectric.android.internal.LocalActivityInvoker.getInstrumentation(LocalActivityInvoker.java:153)
at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:40)
at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:265)
at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:226)
at androidx.fragment.app.testing.FragmentScenario$Companion.internalLaunch$fragment_testing_release(FragmentScenario.kt:588)
at androidx.fragment.app.testing.FragmentScenario$Companion.launchInContainer(FragmentScenario.kt:559)
at com.example.android.architecture.blueprints.todoapp.taskdetail.TaskDetailFragmentTest.activeTasks_displayedInUi(TaskDetailFragmentTest.kt:35)Tests ran to completion.
Run Code Online (Sandbox Code Playgroud)

这些是我正在使用的依赖项

在此输入图像描述

一直在网上寻找答案,但我没有找到任何有用的发现。

我可能会错过什么?

Fan*_*dez 7

您应该检查 Roboelectric 依赖项并确保它是testImplementation

就我而言,我使用的是这个版本

implementation "org.robolectric:robolectric:4.5.1
Run Code Online (Sandbox Code Playgroud)

当我切换到测试实现时,错误消失了。

testImplementation "org.robolectric:robolectric:4.5.1"
Run Code Online (Sandbox Code Playgroud)

  • 我还要补充一点,Robolectric 也不能在 `androidTestImplementation` 源集中使用 - 你会得到完全相同的神秘错误消息。意外地为错误的源集添加依赖项很容易犯错误,而且很难解决它们:) (2认同)