浓缩咖啡测试失败



我正在Android中进行一些浓缩咖啡测试。该错误正在失败:

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
}

我在这里没有得到的是,当我正常运行应用程序未经测试的情况下,我不会遇到错误。

这是完整的答案。
关于launchFragmentInContainer-它采用给定的片段并在内部EmptyFragmentActivity类中启动它 - 将片段放在根视图容器的内部。
因此,它应该仅用于检查片段,这不取决于其父活动。

在您的情况下,您尝试将动作栏隐藏在您正在测试的片段中。但是在测试中,您的片段将不会在主动脉中发射。
如果您只想检查片段,而不是(activity!! as MainActivity).supportActionBar?.hide(),则需要编写类似的内容:

if(activity!! is MainActivity){
    activity?.supportActionBar?.hide()
}

,或者您应该为MainAttivity或使用片段

编写测试

隐藏在我的情况下对动作栏的帮助。

  if (activity is AppCompatActivity) {
                (activity as AppCompatActivity).supportActionBar?.hide()
  }

最新更新