בדיקת יחידה באמצעות 'בקצרה'

‏Glance unit test API מאפשר לכם לבדוק את הקוד של Glance בלי להגדיל את מספר הצפיות או בלי צורך בשירות אוטומציה של ממשק משתמש. לדוגמה, באמצעות ה-API לבדיקת יחידה אפשר לאמת תנאים, כמו בדיקה אם רכיבים נמצאים ברשימה או אם תיבות מסוימות מסומנות, באמצעות פונקציות התאמה כמו hasContentDescriptionEqualTo או isChecked.

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

הגדרה

יחסי התלות הנדרשים לשימוש בספריית בדיקות היחידה מוצגים בדוגמאות הבאות:

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

מבנה הבדיקה

כדאי לארגן פונקציות שניתנות ליצירה מחוץ למחלקה GlanceAppWidget כדי לאפשר שימוש חוזר בקוד ובדיקות יחידה. כדאי לצמצם את המורכבות של היחידות שנבדקות ככל האפשר.

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
        // Prepare inputs and state
        setAppWidgetSize(100.dp, 100.dp)

        // Set the composable under test
        provideComposable {
            MyNewsItemComposable(TEST_NEWS_ITEM)
        }

        // Perform assertions
        onNode(hasTestTag("subTitle"))
            .assertHasText(TEST_NEWS_ITEM.authorName)
    }
}

הגדרת ההקשר והגודל של הבדיקה

אם הפונקציה הניתנת לקישור קוראת את ההקשר באמצעות השיטה LocalContext.current(), צריך להגדיר הקשר באמצעות השיטה LocalContext.current(). אם לא, השלב הזה הוא אופציונלי.

אפשר להשתמש בכל מסגרת של בדיקות יחידה ל-Android שמבוססת על JVM, כמו Roboletric, כדי לספק את ההקשר.

אם הפונקציה הניתנת לקיבוץ ניגשת ל-LocalSize, צריך להגדיר את הגודל המיועד לבדיקה לפני שמספקים פונקציה ניתנת לקיבוץ בבדיקה. גודל ברירת המחדל הוא 349.dp x 455.dp, שזהו גודל של ווידג'ט בגודל 5x4 שמוצג במכשיר Pixel 4 במצב לאורך.

  • אם ב-AppWidget נעשה שימוש ב-sizeMode == Single, אפשר להגדיר את הערכים minWidth ו-minHeight בקובץ info.xml של הווידג'ט.
  • אם ב-AppWidget נעשה שימוש ב-sizeMode == Exact, תוכלו לזהות את הגדלים לבדיקה באופן דומה לאופן שבו קובעים גודל לווידג'ט, ולזהות גדלים של פורמט לרוחב ולגובה שבהם יכול להופיע הווידג'ט ולבדוק אותם.
  • אם ב-AppWidget נעשה שימוש ב-sizeMode == Responsive, אפשר להגדיר את הגודל לאחד מהגדלים ברשימה שציינתם כשציינתם את sizeMode.

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

למידע נוסף ודוגמאות קוד, אפשר לעיין במסמכי העזרה של runGlanceAppWidgetUnitTest.