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

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

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

צפיות

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

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

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

בהמשך מפורטים כמה מהעקרונות המרכזיים לבדיקת קוד הכתיבה.

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

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

במדריך למתחילים בנושא בדיקות תוכלו למצוא סקירה כללית של כל הנושאים העיקריים שצריך ללמוד על בדיקות ב-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.

דוגמיות

Jetnews is a sample news reading app, built with Jetpack Compose. The goal of the sample is to showcase the current UI capabilities of Compose. To try out this sample app, use the latest stable version of Android Studio. You can clone this repository

Jetchat is a sample chat app built with Jetpack Compose. To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here. This sample

Learn how this app was designed and built in the design case study, architecture learning journey and modularization learning journey. This is the repository for the Now in Android app. It is a work in progress 🚧. Now in Android is a fully functional

Jetpack Compose is Android's recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs.

עדכון אחרון: Apr 16, 2025