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

כדאי לבדוק את ממשק המשתמש של האפליקציה כדי לוודא שההתנהגות של הקוד ב-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()
    }
}

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

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

Codelab

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

דוגמיות