问题描述
我想测试由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 (将#修改为@)