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

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

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

באפליקציה היברידית, אפשר למצוא רכיבי פיתוח נייטיב בתוך היררכיות של תצוגות ותצוגות בתוך רכיבי פיתוח נייטיב (באמצעות רכיב ה-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

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

כדי להבטיח ש-UiAutomator יוכל לגשת לכל רכיבי ה-Composable המקוננים עם Modifier.testTag, צריך להפעיל את המאפיין הסמנטי רק פעם אחת ברמה גבוהה בהיררכיית רכיבי ה-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: למרות שהכלי מיועד לממשקי משתמש מבוססי-View, הידע ב-Espresso יכול להיות שימושי גם לבדיקה של חלק מההיבטים ב-Compose.