【发布时间】:2020-12-21 19:31:55
【问题描述】:
我正在 Android 中进行一些 Espresso 测试。测试失败并出现此错误:
java.lang.ClassCastException: androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivity 无法转换为 com.stavro_xhardha.pockettreasure.MainActivity
这是我的测试方法:
@Test
fun toolbarTitle_shouldContainCorrectInput() {
val mockNavController = mock(NavController::class.java)
val fragmentScenario = launchFragmentInContainer<SetupFragment>()
fragmentScenario.onFragment {
Navigation.setViewNavController(it.view!! , mockNavController)
}
onView(withId(R.id.toolbar)).check(matches(withText("Pick your country")))
}
但错误不是来自测试类,而是来自我的被测片段。 崩溃是在这行代码中执行的:
override fun onStart() {
super.onStart()
(activity!! as MainActivity).supportActionBar?.hide() //here
}
我不明白的是,当我在没有测试的情况下正常运行应用程序时,我没有遇到任何错误。
【问题讨论】:
-
这意味着您的
activity是EmptyFragmentActivity,而您尝试将其转换为MainActivity -
EmptyFragmentActivity是什么 -
您是否阅读过有关
launchFragmentInContainer的文档?这个功能所做的所有事情都是获取给定的片段并在内部 EmptyFragmentActivity 类中启动它 — 将片段放置在根视图容器中
标签: android android-fragments android-espresso android-testing android-navigation