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

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

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

צפיות

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

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

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

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

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

דף מידע על בדיקות

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

הגדרה

מגדירים את האפליקציה כדי לבדוק את קוד ה-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. באמצעות הכלל הזה אפשר להגדיר יצירת תוכן או גישה לפעילות. יוצרים את הכללים באמצעות פונקציות factory,‏ 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.

דוגמיות