בדיקת הפריסה של הכתיבה

בודקים את ממשק המשתמש של האפליקציה כדי לוודא שההתנהגות של קוד Compose תקינה. כך תוכלו לזהות שגיאות בשלב מוקדם ולשפר את איכות האפליקציה.

Compose מספק קבוצה של ממשקי API לבדיקה כדי למצוא רכיבים, לאמת את המאפיינים שלהם ולבצע פעולות של משתמשים. ממשקי ה-API כוללים גם תכונות מתקדמות כמו מניפולציה של זמן. אפשר להשתמש בממשקי ה-API האלה כדי ליצור בדיקות חזקות לאימות ההתנהגות של האפליקציה.

צפיות

אם אתם עובדים עם תצוגות מפורטות במקום עם Compose, תוכלו לעיין בקטע הכללי בדיקת אפליקציות ב-Android.

מקום טוב להתחיל בו הוא המדריך בנושא בדיקות אוטומטיות של ממשק המשתמש. במאמר הזה מוסבר איך לבצע אוטומציה של בדיקות שפועלות במכשיר, כולל כשמשתמשים בתצוגות.

מושגים מרכזיים

ריכזנו כאן כמה מושגים מרכזיים לבדיקה של קוד Compose.

  • סמנטיקה: הבדיקות של Compose מבצעות אינטראקציה עם ממשק המשתמש באמצעות סמנטיקה, שמעניקות משמעות לחלקים של ממשק המשתמש ונוצרות לצד היררכיית ממשק המשתמש.
  • ממשקי API לבדיקה: Compose מספק ממשקי API לבדיקה למציאת רכיבים, להצהרות על המצב והמאפיינים שלהם ולביצוע פעולות כדי לדמות אינטראקציות של משתמשים.
  • סנכרון: כברירת מחדל, הבדיקות של Compose מסתנכרנות באופן אוטומטי עם ממשק המשתמש, ומחכות שהוא יהיה במצב חוסר פעילות לפני ביצוע טענות נכוֹנוּת או פעולות.
  • יכולת פעולה הדדית: באפליקציות היברידיות, הבדיקות יכולות לקיים אינטראקציה חלקה עם רכיבים מבוססי-Compose ורכיבים מבוססי-View, ולהשתלב במסגרות בדיקה אחרות.

מדריך למתחילים בנושא בדיקות

במדריך למתחילים בנושא בדיקות תוכלו למצוא סקירה כללית של כל הנושאים העיקריים שצריך ללמוד על בדיקות ב-Compose.

הגדרה

מגדירים את האפליקציה כך שתוכלו לבדוק את הקוד של ה-Compose.

קודם כול, מוסיפים את יחסי התלות הבאים לקובץ build.gradle של המודול שמכיל את בדיקות ממשק המשתמש:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

המודול הזה כולל ComposeTestRule והטמעה ל-Android שנקראת AndroidComposeTestRule. באמצעות הכלל הזה אפשר להגדיר תוכן של Compose או לגשת לפעילות. אפשר ליצור את הכללים באמצעות פונקציות של מפעל, createComposeRule או, אם צריך גישה לפעילות, createAndroidComposeRule. בדיקת ממשק משתמש אופיינית ל-Compose נראית כך:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

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

Codelab

למידע נוסף, אפשר לנסות את codelab של בדיקות Jetpack Compose.

דוגמיות