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

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

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

הגדרה

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

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
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(), צריך להגדיר הקשר באמצעות setContext(). אם לא, השלב הזה הוא אופציונלי.

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

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

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

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

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