使用导航架构的Android单元测试



我使用的是安卓导航组件,该组件有一个名为身份验证活动的活动,该活动包含三个名为SplashFragment、登录片段

OTP片段我想对登录片段进行单元测试,它包含不同的字段,如手机号码、姓名、电子邮件、状态下拉列表。

请帮助我如何为手机号码字段、姓名、电子邮件编写单元测试用例。我已经附上了我的样本单元测试代码,等级依赖。

尝试过的框架:MockitoEspressoRoboelectric

提前谢谢。

@Test
fun vmInitialization() {
val state1 = State("DL", "Delhi")
val state2 = State("UP", "Uttar Pradesh")
val list: ArrayList<State> = ArrayList()
list!!.add(state1)
list!!.add(state2)
val bundle = Bundle().putParcelableArrayList("stateList", list as ArrayList<Parcelable>)
launchFragment(R.id.loginFragment, bundle as Bundle)
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
navController.setGraph(R.navigation.nav_graph_auth)
val scenario = launchFragmentInContainer<LoginFragment>()
navController.setViewModelStore(ViewModelStore())
scenario.onFragment { fragment ->
Navigation.setViewNavController(fragment.requireView(), navController)
}
onView(ViewMatchers.withId(R.id.btn_proceed)).perform(ViewActions.click())
val navGraph = navController.navigatorProvider.navigation(
id = R.id.nav_graph_auth,
startDestination = R.id.otpFragment
) {
}
navController.setGraph(navGraph, null)
scenario.onFragment { fragment ->
assertNotNull(fragment)
assertThat(fragment).isNotNull()
assertThat(fragment.savedStateViewModel).isNotNull()
}
}

渐变依赖关系:-

debugImplementation "androidx.navigation:navigation-testing:2.3.0-alpha06"
debugImplementation "androidx.test:runner:1.2.0"
debugImplementation "androidx.test:core:1.2.0"
debugImplementation("androidx.test:rules:1.2.0")
debugImplementation("androidx.fragment:fragment-ktx:1.1.0-beta01")
debugImplementation "androidx.test.ext:junit-ktx:1.1.1"
debugImplementation('androidx.fragment:fragment-testing:1.1.0') {
// exclude androidx.test:core while fragment_testing depends on 1.1.0
exclude group: 'androidx.test', module: 'core'
}

我对您所说的单元测试/单元测试用例和OTP片段的含义感到困惑。但是如果你要有一个Login Fragment。你的应用程序应该有一个API,这样你就可以很容易地存储你的User data。除非你知道sql,否则我建议你使用Firebase实时数据库/Firebase身份验证,因为它对初学者很友好。

以下是使用Firebase时的感受链接。(https://youtu.be/NhEU7G-KrEI)

最新更新