我正在进行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")))
}
但错误并不是来自于Test类,而是来自于我正在测试的片段(Fragment)。 错误会在这行代码执行时崩溃:
override fun onStart() {
super.onStart()
(activity!! as MainActivity).supportActionBar?.hide() //here
}
我不理解的是,在没有执行测试的情况下正常运行应用程序时,我没有遇到任何错误。
EmptyFragmentActivity
? - coroutineDispatcherlaunchFragmentInContainer
的文档?这个功能所做的就是将给定的片段放置在内部的EmptyFragmentActivity类中并在其中启动它,将片段放置在根视图容器中。 - Dmitriy Mitiai