gpt4 book ai didi

android - Espresso 测试失败

转载 作者:行者123 更新时间:2023-11-29 18:31:07 24 4
gpt4 key购买 nike

我正在 Android 中进行一些 Espresso 测试。测试失败并出现此错误:

java.lang.ClassCastException:androidx.fragment.app.testing.FragmentScenario$EmptyFragmentActivitycannot be cast to 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 类,而是来 self 正在测试的 Fragment。崩溃是在这行代码中执行的:

override fun onStart() {
super.onStart()
(activity!! as MainActivity).supportActionBar?.hide() //here
}

我没有得到的是,当我在没有测试的情况下正常运行应用程序时,我没有遇到任何错误。

最佳答案

这里是完整的答案。
关于 launchFragmentInContainer - 它获取给定的 fragment 并在内部 EmptyFragmentActivity 类中启动它 —— 将 fragment 放在 Root View 容器中。
所以,它应该只用于检查 fragment ,不依赖于它的父 Activity 。

在您的情况下,您尝试将操作栏隐藏在您正在测试的 fragment 中。但是在测试中,您的 fragment 不会在 MainActivity 中启动。
如果你只想检查 fragment ,而不是 (activity!! as MainActivity).supportActionBar?.hide() 你需要写这样的东西:

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

或者您应该为您的 MainActivity 或您使用 fragment 的地方编写测试

关于android - Espresso 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com