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

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

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

הגדרה

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

// 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() method, חייבים להגדיר הקשר באמצעות השיטה 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