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

projectedtestrule, virtual device management

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

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