באמצעות ה-API לבדיקת יחידות של Glance, אתם יכולים לבדוק את קוד ה-Glance בלי לנפח תצוגות או להשתמש ב-UI Automator. לדוגמה, ה-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'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
מבנה הבדיקה
כדי לאפשר שימוש חוזר בקוד ובדיקות יחידה, כדאי לארגן פונקציות קומפוזביליות מחוץ למחלקה GlanceAppWidget. צמצמו ככל האפשר את המורכבות של היחידות שאתם בודקים.
אתם יכולים לטרגט פונקציית Composable לבדיקה באמצעות provideComposable ולהריץ את בדיקות היחידה בצומת Glance אחד או יותר באמצעות onNode או onAllNodes בהתאמה.
private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!" class MyGlanceComposableTest { @Test fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest { // Set the composable to test provideComposable { MyNewsItemComposable(FAKE_HEADLINE) } // Perform assertions onNode(hasTestTag("headline")) .assertHasText(FAKE_HEADLINE) } @Composable fun MyNewsItemComposable(headline: String) { Row { Text( text = headline, modifier = GlanceModifier.semantics { testTag = "headline" }, ) } } }
הגדרת ההקשר והגודל של הבדיקה
אם הפונקציה הקומפוזבילית קוראת את ההקשר באמצעות השיטה LocalContext.current(), צריך להגדיר הקשר באמצעות setContext(). אם לא, השלב הזה אופציונלי.
כדי לספק את ההקשר, אתם יכולים להשתמש בכל מסגרת לבדיקת יחידות ב-Android שמבוססת על JVM, כמו Robolectric.
אם הפונקציה הקומפוזבילית ניגשת אל LocalSize, צריך להגדיר את הגודל הרצוי לבדיקה לפני שמספקים רכיב קומפוזבילי בבדיקה. גודל ברירת המחדל הוא 349.dp x 455.dp, ששווה ערך לווידג'ט בגודל 5x4 שמוצג במכשיר Pixel 4 במצב לאורך.
- אם ה-AppWidget משתמש ב-
sizeMode == Single, אפשר להגדיר את זה ל-minWidthול-minHeightבקובץinfo.xmlשל הווידג'ט. - אם ב-AppWidget נעשה שימוש ב-
sizeMode == Exact, אתם יכולים לזהות את הגדלים לבדיקה באופן דומה לקביעת הגודל של הווידג'ט, ולזהות את הגדלים של הווידג'ט בתצוגה לרוחב ולאורך ולבדוק אותם. - אם ב-AppWidget נעשה שימוש ב-
sizeMode == Responsive, אפשר להגדיר את זה לאחד מהגדלים ברשימה שאתם מספקים כשאתם מציינים את ה-sizeMode.
משך הזמן המוגדר כברירת מחדל לזמן קצוב לתפוגה של בדיקה הוא שנייה אחת, אבל אפשר להעביר משך זמן מותאם אישית כארגומנט ל-method runGlanceAppWidgetUnitTest אם תשתית הבדיקה אוכפת זמן קצוב לתפוגה אחר.
למידע נוסף ולדוגמאות קוד, עיינו במאמרי העזרה של runGlanceAppWidgetUnitTest.