אוטומציה של ניהול מכשירים וירטואליים באמצעות כללי בדיקה מתוכננים

מכשירי XR שמתאימים לשימוש
ההנחיות האלה יעזרו לכם ליצור חוויות למכשירי XR מהסוגים הבאים.
משקפי אודיו ותצוגה

קשה לבצע בדיקות אוטומטיות כשהקוד תלוי בחומרה פיזית. לדוגמה, יכול להיות שתצטרכו לחבר ולנתק את המכשיר הפיזי באופן ידני כדי לאמת את מצבי החיבור. עם כל הסוגים השונים, היכולות ומצבי המכשיר של משקפיים עם ממשק קולי ומשקפיים עם תצוגה פנימית, האתגר הזה יכול להיות מורכב עוד יותר. כדי לבדוק את מגוון המקרים הזה, אפשר להשתמש בממשקי ה-API של Projected Test Rule כדי להגדיר ולנהל באופן אוטומטי סביבת בדיקה מוקרנת. הספרייה מטפלת ביצירה של מכשיר מוקרן, במצבי החיבור ובאימות היכולות, כך שתוכלו להתמקד בבדיקת הלוגיקה המרכזית של האפליקציה. אפשר להשתמש בממשקי ה-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 לערכי ברירת המחדל שלהם לפני כל בדיקה. אין צורך לאפס את המאפיינים האלה באופן ידני בשיטות @After.

בדיקת יכולות שונות של המכשיר

אפשר להציג במשקפיים עם תצוגה פנימית ממשקי משתמש שנבנו באמצעות Jetpack Compose Glimmer. כברירת מחדל, ProjectedTestRule מפעיל את CAPABILITY_VISUAL_UI. כדי להגדיר בדיוק מה המכשיר הווירטואלי תומך, משתמשים ב-capabilities set. הפעולה הזו שימושית כדי לוודא שהאפליקציה בודקת בצורה נכונה אם יש תמיכה בחומרה לפני שהיא מנסה להקרין תוכן למשקפיים.

@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 לערכי ברירת המחדל שלהם לפני כל בדיקה. אין צורך לאפס את המאפיינים האלה באופן ידני בשיטות @After.
  • אם אתם צריכים לאמת התנהגות ספציפית לפעילות שצפויה להציג משקפיים, השתמשו ב-launchTestProjectedDeviceActivity.