小编Jon*_*eif的帖子

如何使用FragmentScenario测试Dagger片段?

我正在尝试使用Android Jetpack导航组件和片段测试库来测试片段交互。我的应用程序使用Java + Dagger2作为DI。

为了测试导航,我创建了一个JUnit测试

    @Test
    public void testNavigationToLoginFragment() {
        // Create a mock NavController
        NavController mockNavController = mock(NavController.class);

        // Create a graphical FragmentScenario for the Intro Fragment
        FragmentScenario<IntroFragment> introFragmentScenario = FragmentScenario.launchInContainer(IntroFragment.class);

        // Set the NavController property on the fragment
        introFragmentScenario.onFragment(fragment ->
                Navigation.setViewNavController(fragment.requireView(), mockNavController)
        );

        // Verify that performing a click prompts the correct Navigation action
        onView(withId(R.id.button_login)).perform(click());
        verify(mockNavController).navigate(R.id.action_intro_fragment_to_login_fragment);
    }

Run Code Online (Sandbox Code Playgroud)

每当我运行测试时,都会出现以下错误:

java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: No injector factory bound for Class<XXX>

Run Code Online (Sandbox Code Playgroud)

我如何在这里注入片段?是否可以将DaggerFragments与FragmentScenario一起使用?

java android android-jetpack android-fragmentscenario

6
推荐指数
1
解决办法
95
查看次数