יכולת פעולה הדדית

‫Compose משתלב עם מסגרות נפוצות לבדיקות.

יכולת פעולה הדדית עם Espresso

באפליקציה היברידית, אפשר למצוא רכיבי Compose בתוך היררכיות של תצוגות ותצוגות בתוך פונקציות Composable של Compose (באמצעות פונקציית ה-Composable‏ AndroidView).

אין צורך לבצע שלבים מיוחדים כדי להתאים בין שני הסוגים. אתם מתאימים תצוגות ל-onView של Espresso, ואלמנטים של Compose ל-ComposeTestRule.

@Test
fun androidViewInteropTest() {
    // Check the initial state of a TextView that depends on a Compose state.
    Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
    // Click on the Compose button that changes the state.
    composeTestRule.onNodeWithText("Click here").performClick()
    // Check the new value.
    Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}

יכולת פעולה הדדית עם UiAutomator

כברירת מחדל, אפשר לגשת לרכיבים קומפוזביליים מ-UiAutomator רק באמצעות תיאורים נוחים (טקסט מוצג, תיאור תוכן וכו'). אם רוצים לגשת לרכיב שאפשר להרכיב ממנו ממשק משתמש שמשתמש ב-Modifier.testTag, צריך להפעיל את המאפיין הסמנטי testTagsAsResourceId בעץ המשנה של הרכיב שאפשר להרכיב ממנו ממשק משתמש. הפעלת ההתנהגות הזו שימושית לרכיבי Composable שאין להם כינוי ייחודי אחר, כמו רכיבי Composable שאפשר לגלול בהם (לדוגמה, LazyColumn).

כדי לוודא שכל רכיבי ה-Composable המקוננים עם Modifier.testTag נגישים מ-UiAutomator, צריך להפעיל את המאפיין הסמנטי רק פעם אחת ברמה גבוהה בהיררכיית רכיבי ה-Composable.

Scaffold(
    // Enables for all composables in the hierarchy.
    modifier = Modifier.semantics {
        testTagsAsResourceId = true
    }
){
    // Modifier.testTag is accessible from UiAutomator for composables nested here.
    LazyColumn(
        modifier = Modifier.testTag("myLazyColumn")
    ){
        // Content
    }
}

כל רכיב שאפשר להרכיב עם Modifier.testTag(tag) יכול להיות נגיש באמצעות By.res(resourceName), עם אותו tag כמו resourceName.

val device = UiDevice.getInstance(getInstrumentation())

val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.

מקורות מידע נוספים

  • בדיקת אפליקציות ב-Android: דף הנחיתה הראשי בנושא בדיקות ב-Android מספק סקירה רחבה יותר של עקרונות וטכניקות בדיקה.
  • יסודות הבדיקה: מידע נוסף על המושגים הבסיסיים שמאחורי בדיקת אפליקציית Android.
  • בדיקות מקומיות: אתם יכולים להריץ בדיקות מסוימות באופן מקומי, בתחנת העבודה שלכם.
  • בדיקות עם מכשור: מומלץ להריץ גם בדיקות עם מכשור. כלומר, בדיקות שמופעלות ישירות במכשיר.
  • אינטגרציה רציפה (CI): אינטגרציה רציפה מאפשרת לכם לשלב את הבדיקות בצינור הפריסה.
  • בדיקה בגדלים שונים של מסכים: יש למשתמשים הרבה מכשירים שונים, ולכן כדאי לבדוק את האתר בגדלים שונים של מסכים.
  • Espresso: למרות שהכלי מיועד לממשקי משתמש מבוססי-תצוגה, הידע ב-Espresso יכול לעזור בהיבטים מסוימים של בדיקות ב-Compose.