微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何测试活动处理的片段导航

如何解决如何测试活动处理的片段导航

我想测试由MainActivity处理的片段导航。

为此我创建了HomeFragmentTest

@MediumTest
@RunWith(AndroidJUnit4::class)
class HomeFragmenTest {

  @Rule
  @JvmField
  val mockitoRule: MockitoRule = MockitoJUnit.rule()

  @Test
  fun onUsersButtonClick_navigateUsersListFragmet() {
    val navController = mock(NavController::class.java)

    val fragScenario = launchFragmentInContainer<UsersListFragment>()

    fragScenario.onFragment {
        Navigation.setViewNavController(it.requireView(),navController)
    }

    onView(withId(R.id.usersButton))
      .perform(click())

    verify(navController).navigate(R.id.usersListFragment)
  }
  
}

运行测试将调用按钮单击操作,然后viewmodel调用将将事件发布到MainActivity的导航方法。 MainActivity观察到此事件并调用navController导航方法

viewmodel.navAction.observe(this,{ direction ->
   navController?.navigate(direction)
})

问题是我的测试失败了

Wanted but not invoked:
navController.navigate(2131296591);
Actually,there were zero interactions with this mock.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。