Android 使用Espresso使用NavGraphViewModel对Viewpager进行UI测试

Android 使用Espresso使用NavGraphViewModel对Viewpager进行UI测试,android,android-fragments,android-viewpager,android-espresso,android-navigation,Android,Android Fragments,Android Viewpager,Android Espresso,Android Navigation,我目前有一个应用程序使用单活动多片段方法,在这个应用程序中有一个片段与其子级共享重要数据,因此我使用了范围为嵌套nav图的navGraphViewModels,如下所示: private val viewModel by navGraphViewModels<MySharedViewModel>(R.id.nested_nav_graph) 但是,由于父片段随后将其子片段加载到viewPager中,并且这些子片段也需要一个NavController,因此我的测试不会超过@Befor

我目前有一个应用程序使用单活动多片段方法,在这个应用程序中有一个片段与其子级共享重要数据,因此我使用了范围为嵌套nav图的navGraphViewModels,如下所示:

private val viewModel by navGraphViewModels<MySharedViewModel>(R.id.nested_nav_graph)
但是,由于父片段随后将其子片段加载到viewPager中,并且这些子片段也需要一个NavController,因此我的测试不会超过@Before块。任何关于如何将navController设置为子片段的帮助都将不胜感激

        val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
        // This allows fragments to use by navGraphViewModels()
        navController.setViewModelStore(ViewModelStore())
        UiThreadStatement.runOnUiThread {
            navController.setGraph(R.navigation.nested_nav_graph)
        }
        val scenario =
            launchFragmentInContainer(themeResId = R.style.AppTheme) {
                MyFragment().also { fragment ->
                    fragment.viewLifecycleOwnerLiveData.observeForever { viewLifecycleOwner ->
                        if (viewLifecycleOwner != null) {
                            Navigation.setViewNavController(fragment.requireView(), navController)
                        }
                    }
                }
            }
        return navController
    }