प्रोजेक्ट किए गए टेस्ट के नियमों की मदद से, वर्चुअल डिवाइस मैनेजमेंट को ऑटोमेट करना

projectedtestrule, वर्चुअल डिवाइस मैनेजमेंट

XR डिवाइस, जिन पर यह सुविधा काम करती है
इस गाइड से, आपको इन XR डिवाइसों के लिए अनुभव बनाने में मदद मिलती है.
ऑडियो और
डिसप्ले वाले स्मार्ट ग्लास

जब कोड, फ़िज़िकल हार्डवेयर पर निर्भर करता है, तो टेस्ट को ऑटोमेट करना मुश्किल होता है. उदाहरण के लिए, कनेक्शन की स्थितियों की पुष्टि करने के लिए, आपको फ़िज़िकल डिवाइस को मैन्युअल तरीके से कनेक्ट और डिसकनेक्ट करना पड़ सकता है. ऑडियो वाले स्मार्ट ग्लास और डिसप्ले वाले स्मार्ट ग्लास के सभी अलग-अलग टाइप, क्षमताओं, और डिवाइस की स्थितियों की वजह से, यह चुनौती और भी मुश्किल हो सकती है. इन अलग-अलग स्थितियों की जांच करने के लिए, Projected Test Rule के एपीआई का इस्तेमाल करें. इससे, प्रोजेक्ट किए गए टेस्ट एनवायरमेंट को सेट अप और मैनेज करने की प्रोसेस को ऑटोमेट किया जा सकता है. लाइब्रेरी, प्रोजेक्ट किए गए डिवाइस को बनाने, कनेक्शन की स्थितियों, और क्षमता की पुष्टि करने की प्रोसेस को मैनेज करती है. इसलिए, आपके पास अपने ऐप्लिकेशन के मुख्य लॉजिक की जांच करने पर फ़ोकस करने का विकल्प होता है. बोइलरप्लेट कोड लिखे बिना, मज़बूत टेस्ट सुइट बनाने के लिए, इन एपीआई का इस्तेमाल करें.

लाइब्रेरी की डिपेंडेंसी जोड़ना

टेस्ट के नियम का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन की 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 से बने यूज़र इंटरफ़ेस (यूआई) दिखा सकते हैं. डिफ़ॉल्ट रूप से, the 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 जैसी प्रॉपर्टी को डिफ़ॉल्ट पर रीसेट करता है. @After तरीकों में, आपको इन प्रॉपर्टी को मैन्युअल तरीके से रीसेट करने की ज़रूरत नहीं होती.
  • जब आपको किसी ऐसी गतिविधि के लिए, खास तौर पर व्यवहार की पुष्टि करनी हो जिसे डिसप्ले वाले स्मार्ट ग्लास पर प्रोजेक्ट किया गया है, तो launchTestProjectedDeviceActivity का इस्तेमाल करें.