首页 > 解决方案 > 转换异常 - AndroidJUnitRunner 无法转换为 RoboMonitoringInstrumentation

问题描述

使用 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.

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

在此处输入图像描述

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

我能错过什么?

标签: androidandroid-testing

解决方案


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

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

implementation "org.robolectric:robolectric:4.5.1

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

testImplementation "org.robolectric:robolectric:4.5.1"

推荐阅读