Testing Navigasi

This commit is contained in:
202310715297 RAIHAN ARIQ MUZAKKI 2025-10-23 16:25:18 +07:00
parent ff3185b914
commit 9c7b40a50a
2 changed files with 14 additions and 1 deletions

View File

@ -82,6 +82,7 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:${rootProject.extra["lifecycle_version"]}") implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:${rootProject.extra["lifecycle_version"]}")
implementation("androidx.navigation:navigation-compose:2.7.4") implementation("androidx.navigation:navigation-compose:2.7.4")
// Testing Depedencies
androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01")) androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01"))
androidTestImplementation("androidx.compose.ui:ui-test-junit4") androidTestImplementation("androidx.compose.ui:ui-test-junit4")
androidTestImplementation("androidx.navigation:navigation-testing:2.7.4") androidTestImplementation("androidx.navigation:navigation-testing:2.7.4")

View File

@ -39,7 +39,7 @@ class CupcakeScreenNavigationTest {
* Note: To access to an empty activity, the code uses ComponentActivity instead of * Note: To access to an empty activity, the code uses ComponentActivity instead of
* MainActivity. * MainActivity.
*/ */
@get:Rule @get:Rule // Aturan Pengujian
val composeTestRule = createAndroidComposeRule<ComponentActivity>() val composeTestRule = createAndroidComposeRule<ComponentActivity>()
private lateinit var navController: TestNavHostController private lateinit var navController: TestNavHostController
@ -54,17 +54,20 @@ class CupcakeScreenNavigationTest {
} }
} }
// Testing Verifikasi Tujuan Awal Aplikasi Dimulai
@Test @Test
fun cupcakeNavHost_verifyStartDestination() { fun cupcakeNavHost_verifyStartDestination() {
navController.assertCurrentRouteName(CupcakeScreen.Start.name) navController.assertCurrentRouteName(CupcakeScreen.Start.name)
} }
// Testing Fungsi Tombol Kembali di Menu Awal (Tidak ada tombol kembali)
@Test @Test
fun cupcakeNavHost_verifyBackNavigationNotShownOnStartOrderScreen() { fun cupcakeNavHost_verifyBackNavigationNotShownOnStartOrderScreen() {
val backText = composeTestRule.activity.getString(R.string.back_button) val backText = composeTestRule.activity.getString(R.string.back_button)
composeTestRule.onNodeWithContentDescription(backText).assertDoesNotExist() composeTestRule.onNodeWithContentDescription(backText).assertDoesNotExist()
} }
// Testing Pilih Opsi --> Navigasi Ke Halaman Flavor
@Test @Test
fun cupcakeNavHost_clickOneCupcake_navigatesToSelectFlavorScreen() { fun cupcakeNavHost_clickOneCupcake_navigatesToSelectFlavorScreen() {
composeTestRule.onNodeWithStringId(R.string.one_cupcake) composeTestRule.onNodeWithStringId(R.string.one_cupcake)
@ -72,6 +75,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Flavor.name) navController.assertCurrentRouteName(CupcakeScreen.Flavor.name)
} }
// Testing Next Button --> Navigasi Ke Halaman Pickup (Flavor)
@Test @Test
fun cupcakeNavHost_clickNextOnFlavorScreen_navigatesToPickupScreen() { fun cupcakeNavHost_clickNextOnFlavorScreen_navigatesToPickupScreen() {
navigateToFlavorScreen() navigateToFlavorScreen()
@ -80,6 +84,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Pickup.name) navController.assertCurrentRouteName(CupcakeScreen.Pickup.name)
} }
// Testing Back Button --> Navigasi Ke Halaman Awal (Flavor)
@Test @Test
fun cupcakeNavHost_clickBackOnFlavorScreen_navigatesToStartOrderScreen() { fun cupcakeNavHost_clickBackOnFlavorScreen_navigatesToStartOrderScreen() {
navigateToFlavorScreen() navigateToFlavorScreen()
@ -87,6 +92,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Start.name) navController.assertCurrentRouteName(CupcakeScreen.Start.name)
} }
// Testing Cancel Button --> Navigasi Ke Halaman Awal (Flavor)
@Test @Test
fun cupcakeNavHost_clickCancelOnFlavorScreen_navigatesToStartOrderScreen() { fun cupcakeNavHost_clickCancelOnFlavorScreen_navigatesToStartOrderScreen() {
navigateToFlavorScreen() navigateToFlavorScreen()
@ -95,6 +101,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Start.name) navController.assertCurrentRouteName(CupcakeScreen.Start.name)
} }
// Testing Next Button --> Navigasi Ke Halaman Summary (Pickup)
@Test @Test
fun cupcakeNavHost_clickNextOnPickupScreen_navigatesToSummaryScreen() { fun cupcakeNavHost_clickNextOnPickupScreen_navigatesToSummaryScreen() {
navigateToPickupScreen() navigateToPickupScreen()
@ -105,6 +112,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Summary.name) navController.assertCurrentRouteName(CupcakeScreen.Summary.name)
} }
// Testing Back Button --> Navigasi Ke Halaman Flavor (Pickup)
@Test @Test
fun cupcakeNavHost_clickBackOnPickupScreen_navigatesToFlavorScreen() { fun cupcakeNavHost_clickBackOnPickupScreen_navigatesToFlavorScreen() {
navigateToPickupScreen() navigateToPickupScreen()
@ -112,6 +120,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Flavor.name) navController.assertCurrentRouteName(CupcakeScreen.Flavor.name)
} }
// Testing Cancel Button --> Navigasi Ke Halaman Awal (Pickup)
@Test @Test
fun cupcakeNavHost_clickCancelOnPickupScreen_navigatesToStartOrderScreen() { fun cupcakeNavHost_clickCancelOnPickupScreen_navigatesToStartOrderScreen() {
navigateToPickupScreen() navigateToPickupScreen()
@ -120,6 +129,7 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Start.name) navController.assertCurrentRouteName(CupcakeScreen.Start.name)
} }
// Testing Cancel Button --> Navigasi Ke Halaman Awal (Summary)
@Test @Test
fun cupcakeNavHost_clickCancelOnSummaryScreen_navigatesToStartOrderScreen() { fun cupcakeNavHost_clickCancelOnSummaryScreen_navigatesToStartOrderScreen() {
navigateToSummaryScreen() navigateToSummaryScreen()
@ -128,6 +138,8 @@ class CupcakeScreenNavigationTest {
navController.assertCurrentRouteName(CupcakeScreen.Start.name) navController.assertCurrentRouteName(CupcakeScreen.Start.name)
} }
// FUNGSI NAVIGASI HALAMAN
private fun navigateToFlavorScreen() { private fun navigateToFlavorScreen() {
composeTestRule.onNodeWithStringId(R.string.one_cupcake) composeTestRule.onNodeWithStringId(R.string.one_cupcake)
.performClick() .performClick()