1616
1717package com .example .android .navigationsample ;
1818
19- import androidx .fragment .app .testing .FragmentScenario ;
20- import androidx .navigation .NavBackStackEntry ;
21- import androidx .navigation .Navigation ;
22- import androidx .navigation .testing .TestNavHostController ;
23- import androidx .test .core .app .ApplicationProvider ;
24- import androidx .test .ext .junit .runners .AndroidJUnit4 ;
19+ import static com .google .common .truth .Truth .assertThat ;
20+
21+ import static androidx .test .espresso .Espresso .onView ;
22+ import static androidx .test .espresso .action .ViewActions .click ;
23+ import static androidx .test .espresso .matcher .ViewMatchers .withId ;
2524
2625import org .junit .Test ;
2726import org .junit .runner .RunWith ;
2827
2928import java .util .List ;
3029
31- import static androidx .test .espresso .Espresso .onView ;
32- import static androidx .test .espresso .action .ViewActions .click ;
33- import static androidx .test .espresso .matcher .ViewMatchers .withId ;
34- import static com .google .common .truth .Truth .assertThat ;
30+ import androidx .fragment .app .testing .FragmentScenario ;
31+ import androidx .navigation .NavBackStackEntry ;
32+ import androidx .navigation .Navigation ;
33+ import androidx .navigation .testing .TestNavHostController ;
34+ import androidx .test .core .app .ApplicationProvider ;
35+ import androidx .test .ext .junit .runners .AndroidJUnit4 ;
3536
3637/**
3738 * A simple test class that can be run both on device (or emulator) or on the host (as a JVM test
@@ -46,15 +47,16 @@ public void testNavigateToPlay() {
4647 // Create a TestNavHostController
4748 TestNavHostController navController = new TestNavHostController (
4849 ApplicationProvider .getApplicationContext ());
49- navController .setGraph (R .navigation .navigation );
5050
5151 // Create a graphical FragmentScenario for the TitleScreen
5252 FragmentScenario <TitleScreen > titleScenario =
5353 FragmentScenario .launchInContainer (TitleScreen .class );
5454
5555 // Set the NavController property on the fragment
56- titleScenario .onFragment (fragment ->
57- Navigation .setViewNavController (fragment .requireView (), navController )
56+ titleScenario .onFragment (fragment -> {
57+ navController .setGraph (R .navigation .navigation );
58+ Navigation .setViewNavController (fragment .requireView (), navController );
59+ }
5860 );
5961
6062 // Verify that performing a click changes the NavController's state
@@ -68,15 +70,17 @@ public void testNavigateToPlay() {
6870 public void testNavigateToLeaderboard () {
6971 // Create a TestNavHostController
7072 TestNavHostController navController = new TestNavHostController (ApplicationProvider .getApplicationContext ());
71- navController .setGraph (R .navigation .navigation );
7273
7374 // Create a graphical FragmentScenario for the TitleScreen
7475 FragmentScenario <TitleScreen > titleScenario =
7576 FragmentScenario .launchInContainer (TitleScreen .class );
7677
7778 // Set the NavController property on the fragment
78- titleScenario .onFragment (fragment ->
79- Navigation .setViewNavController (fragment .requireView (), navController )
79+ titleScenario .onFragment (fragment -> {
80+ navController .setGraph (R .navigation .navigation );
81+ Navigation .setViewNavController (fragment .requireView (), navController );
82+ }
83+
8084 );
8185
8286 // Verify that performing a click changes the NavController's state
0 commit comments