Skip to content
This repository was archived by the owner on Jan 10, 2025. It is now read-only.

Commit 8f95d86

Browse files
committed
Fixes NavigationBasicSample tests
1 parent e9c3b55 commit 8f95d86

File tree

5 files changed

+35
-29
lines changed

5 files changed

+35
-29
lines changed

NavigationBasicSample/app/build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,14 @@ dependencies {
7676
implementation deps.navigation.fragment_ktx
7777
implementation deps.navigation.runtime_ktx
7878
implementation deps.fragment.runtime_ktx
79+
7980
// "androidx.fragment:fragment-testing" must be scoped to all sourcesets.
80-
implementation(deps.fragment.testing)
81+
implementation deps.fragment.testing
82+
// Forcing androidx.test:core version
83+
implementation deps.atsl.core
8184

8285
// Espresso and UI Testing
86+
androidTestImplementation deps.atsl.core
8387
androidTestImplementation deps.atsl.ext_junit
8488
androidTestImplementation deps.espresso.core
8589
androidTestImplementation deps.espresso.contrib
@@ -88,6 +92,7 @@ dependencies {
8892
androidTestImplementation deps.truth
8993

9094
// Host-side tests
95+
testImplementation deps.atsl.core
9196
testImplementation deps.atsl.ext_junit
9297
testImplementation deps.robolectric
9398
// Espresso API running in Robolectric

NavigationBasicSample/app/src/uiTest/java/com/example/android/navigationsample/LeaderboardScreenTest.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,15 @@ class LeaderboardScreenTest {
2020

2121
@Test
2222
fun testNavigateToProfile() {
23-
val navController = TestNavHostController(
24-
ApplicationProvider.getApplicationContext()).apply {
25-
setGraph(R.navigation.navigation)
26-
setCurrentDestination(R.id.leaderboard)
27-
}
23+
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
2824

2925
// Create a graphical FragmentScenario for the Leaderboard fragment
3026
val leaderboardScenario = launchFragmentInContainer<Leaderboard>()
3127

3228
// Set the NavController property on the fragment
3329
leaderboardScenario.onFragment { fragment ->
30+
navController.setGraph(R.navigation.navigation)
31+
navController.setCurrentDestination(R.id.leaderboard)
3432
Navigation.setViewNavController(fragment.requireView(), navController)
3533
}
3634

NavigationBasicSample/app/src/uiTest/java/com/example/android/navigationsample/RegisterScreenTest.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,15 @@ class RegisterScreenTest {
1717

1818
@Test
1919
fun testNavigateToMatch() {
20-
val navController = TestNavHostController(
21-
ApplicationProvider.getApplicationContext()).apply {
22-
setGraph(R.navigation.navigation)
23-
setCurrentDestination(R.id.register)
24-
}
20+
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
2521

2622
// Create a graphical FragmentScenario for the Register fragment
2723
val registerScenario = launchFragmentInContainer<Register>()
2824

2925
// Set the NavController property on the fragment
3026
registerScenario.onFragment { fragment ->
27+
navController.setGraph(R.navigation.navigation)
28+
navController.setCurrentDestination(R.id.register)
3129
Navigation.setViewNavController(fragment.requireView(), navController)
3230
}
3331

NavigationBasicSample/app/src/uiTest/java/com/example/android/navigationsample/TitleScreenTestJava.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,23 @@
1616

1717
package 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

2625
import org.junit.Test;
2726
import org.junit.runner.RunWith;
2827

2928
import 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

NavigationBasicSample/app/src/uiTest/java/com/example/android/navigationsample/TitleScreenTestKotlin.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.example.android.navigationsample
1919
import androidx.fragment.app.testing.launchFragmentInContainer
2020
import androidx.navigation.Navigation
2121
import androidx.navigation.testing.TestNavHostController
22+
import androidx.test.annotation.UiThreadTest
2223
import androidx.test.core.app.ApplicationProvider
2324
import androidx.test.espresso.Espresso.onView
2425
import androidx.test.espresso.action.ViewActions.click
@@ -39,13 +40,13 @@ class TitleScreenTestKotlin {
3940
fun testNavigateToPlay() {
4041
// Create a TestNavHostController
4142
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
42-
navController.setGraph(R.navigation.navigation)
4343

4444
// Create a graphical FragmentScenario for the TitleScreen
4545
val titleScenario = launchFragmentInContainer<TitleScreen>()
4646

4747
// Set the NavController property on the fragment
4848
titleScenario.onFragment { fragment ->
49+
navController.setGraph(R.navigation.navigation)
4950
Navigation.setViewNavController(fragment.requireView(), navController)
5051
}
5152

@@ -60,13 +61,13 @@ class TitleScreenTestKotlin {
6061
fun testNavigateToLeaderboard() {
6162
// Create a TestNavHostController
6263
val navController = TestNavHostController(ApplicationProvider.getApplicationContext())
63-
navController.setGraph(R.navigation.navigation)
6464

6565
// Create a graphical FragmentScenario for the TitleScreen
6666
val titleScenario = launchFragmentInContainer<TitleScreen>()
6767

6868
// Set the NavController property on the fragment
6969
titleScenario.onFragment { fragment: TitleScreen ->
70+
navController.setGraph(R.navigation.navigation)
7071
Navigation.setViewNavController(fragment.requireView(), navController)
7172
}
7273

0 commit comments

Comments
 (0)