קשה לבצע אוטומציה של בדיקות כשהקוד תלוי בחומרה פיזית. לדוגמה, יכול להיות שתצטרכו לחבר ולנתק ידנית את המכשיר הפיזי כדי לאמת את מצבי החיבור. האתגר הזה יכול להיות מורכב עוד יותר בגלל הסוגים השונים, היכולות ומצבי המכשיר של משקפי שמע ומשקפיים עם תצוגה. כדי לבדוק את מגוון המקרים הזה, אפשר להשתמש בממשקי ה-API של כלל הבדיקה המשוער כדי להפוך את ההגדרה והניהול של סביבת בדיקה משוערת לאוטומטיים. הספרייה מטפלת ביצירת מכשירים וירטואליים, במצבי חיבור ובאימות יכולות, כך שתוכלו להתמקד בבדיקת הלוגיקה המרכזית של האפליקציה. אפשר להשתמש בממשקי ה-API האלה כדי לבנות חבילות בדיקה חזקות בלי לכתוב קוד boilerplate.
הוספת תלות של הפרויקט בספריות
כדי להשתמש בכלל הבדיקה, מוסיפים את ארטיפקט הבדיקה לbuild.gradleקובץ האפליקציה:
מגניב
dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}
Kotlin
dependencies {
// JXR Projected testing library
testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}
הגדרת כלל הבדיקה
כדי להגדיר את כלל הבדיקה הבסיסי, מוסיפים הערה לכלל בכיתת הבדיקה. כברירת מחדל, הכלל מחבר מכשיר שמוקרן ומפעיל את היכולות החזותיות שלו לפני כל בדיקה.
@get:Rule val projectedTestRule = ProjectedTestRule() private val context: Context get() = ApplicationProvider.getApplicationContext() @Test fun testWithConnectedDevice() { val projectedContext = ProjectedContext.createProjectedDeviceContext(context) assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue() }
בדיקת תרחישים נפוצים אחרים
אחרי שהגדרתם את סביבת הבדיקה המשוערת עם כלל בדיקה בסיסי, כדאי לבדוק תרחישים נפוצים אחרים של משקפי שמע ומשקפיים עם תצוגה כדי לוודא שהפונקציונליות של האפליקציה תקינה.
ניתוק של מכשיר בדיקה
כדי לבדוק איך האפליקציה מגיבה כשמתנתק החיבור למשקפיים, משתמשים במאפיין isDeviceConnected:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
מידע חשוב על הקוד
- הכלל מאפס מאפיינים כמו
isDeviceConnectedלברירות המחדל שלהם לפני כל בדיקה. אין צורך לאפס ידנית את המאפיינים האלה ב-methods של@After.
בדיקת יכולות שונות של המכשיר
אפשר להציג במשקפיים חכמים ממשקי משתמש שנבנו באמצעות Jetpack Compose Glimmer. כברירת מחדל, ProjectedTestRule מפעיל את CAPABILITY_VISUAL_UI. כדי להגדיר בדיוק מה המכשיר המוקרן תומך, משתמשים בערכת capabilities. הפעולה הזו שימושית כדי לוודא שהאפליקציה בודקת בצורה נכונה את תמיכת החומרה לפני שהיא מנסה להקרין תוכן למשקפיים.
@Test fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity -> // disable display capability projectedTestRule.capabilities = setOf() runBlocking { // create the controller val controller = ProjectedDeviceController.create(activity) // verify the app recognizes the lack of visual UI support assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI) } }
מידע חשוב על הקוד
- הכלל מאפס מאפיינים כמו
capabilitiesלברירות המחדל שלהם לפני כל בדיקה. אין צורך לאפס ידנית את המאפיינים האלה ב-methods של@After. - אם אתם צריכים לאמת התנהגות ספציפית לפעילות שצפויה להציג משקפיים, השתמשו ב-
launchTestProjectedDeviceActivity.