【问题标题】:Android Unit Testing using Navigation Architecture使用导航架构的 Android 单元测试
【发布时间】:2020-09-08 06:30:53
【问题描述】:

我正在使用 Android 导航组件,它有 1 个名为 Authentication Activity 的活动,其中包含 3 个名为 SplashFragmentLogin Fragment 的片段>OTP 片段

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

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

框架尝试:- 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()
    }
}

Gradle 依赖:-

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'
}

【问题讨论】:

  • 嗨开发者....关于这个问题的任何更新??

标签: android unit-testing kotlin junit


【解决方案1】:

我对单元测试/单元测试用例和 OTP 片段的意思感到困惑。但是,如果您要拥有Login Fragment。您的应用程序应该有一个 API,以便您可以轻松地存储您的 User data。除非您了解 sql,否则我建议您使用 Firebase 实时数据库/ Firebase 身份验证,因为它适合初学者。

这里是 Firebase 体验的链接。 (https://youtu.be/NhEU7G-KrEI)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多