ARCore के टेस्ट नियमों के हिसाब से अपने ऐप्लिकेशन की जांच करना

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

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

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

एआरकोर टेस्ट रूल का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन की build.gradle फ़ाइल में ये डिपेंडेंसी जोड़ें:

Kotlin

dependencies {
    testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14")
}

शानदार

dependencies {
    testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14"
}

अगर आपका ऐप्लिकेशन, एक्सआर SceneCore पर निर्भर करता है, तो एक्सआर SceneCore की टेस्टिंग डिपेंडेंसी भी शामिल करें:

Kotlin

dependencies {
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15")
}

शानदार

dependencies {
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15"
}

टेस्ट रूल सेट अप करना

अपने JUnit टेस्ट में, टेस्ट सेट अप करने के लिए AndroidJUnit4 टेस्ट रनर का इस्तेमाल करें:

@Rule @JvmField val arCoreTestRule = ArCoreTestRule()
private lateinit var activityController: ActivityController<ComponentActivity>
private lateinit var activity: ComponentActivity
private lateinit var testDispatcher: TestDispatcher
private lateinit var testScope: TestScope
private lateinit var session: Session

@Before
fun setUp() {
    testDispatcher = StandardTestDispatcher()
    testScope = TestScope(testDispatcher)
    activityController = Robolectric.buildActivity(ComponentActivity::class.java)
    activity = activityController.get()

    // Set up the activity permissions.
    shadowOf(activity.application).grantPermissions(HAND_TRACKING)

    activityController.create().start().resume()

    val sessionCreateResult = Session.create(activity = activity, coroutineContext = testDispatcher)
    session = (sessionCreateResult as SessionCreateSuccess).session

    // Configure the session.
    session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH))
}

@Before चरण में, अपना टेस्टिंग एनवायरमेंट सेट अप करें. इसमें ज़रूरी अनुमतियां और सेशन कॉन्फ़िगरेशन शामिल हैं.

टेस्ट केस बनाना

किसी खास स्थिति की जांच करने के लिए, टेस्ट केस बनाएं. इस उदाहरण में, हम यह जांच करते हैं कि हमारा टेस्ट डेटा, हाथ की गतिविधि को ट्रैक करने वाले जेस्चर डिटेक्टर के साथ काम करता है या नहीं:

@Test
fun test_thumbsUp() = runTest(testDispatcher) {
    arCoreTestRule.rightHand.isVisible = true
    arCoreTestRule.rightHand.handJointMap = gestureThumbsUp
    advanceUntilIdle()
    val handState = Hand.right(session)?.state?.value ?: fail("Did not detect a right hand")

    val isThumbsUp = detectThumbsUp(handState)
    assertThat(isThumbsUp).isTrue()
}

यूनिट टेस्ट में अक्सर ये चरण शामिल होते हैं:

  1. टेस्ट सेट अप करने के लिए, टेस्ट डेटा इंजेक्ट करने के लिए ArCoreTestRule का इस्तेमाल करें. इस ऑब्जेक्ट में, एनवायरमेंट का वह डेटा शामिल होता है जिसे आपका ऐप्लिकेशन, सेशन से पढ़ता है. TestScope.advanceUntilIdle का इस्तेमाल करके, यह पक्का करें कि सिस्टम टेस्ट करने के लिए तैयार है. इस उदाहरण में, दाहिना हाथ चालू है. साथ ही, हाथ के जॉइंट का डेटा भरने के लिए, पोज़ डेटा का इस्तेमाल किया जाता है.
  2. इसके बाद, टेस्ट करें. इंजेक्ट किए गए डेटा का इस्तेमाल करने के लिए, आपके ऐप्लिकेशन को किसी खास तरीके से काम करने की ज़रूरत नहीं होती. Session, उस डेटा का इस्तेमाल करता है जिसे ArCoreTestRule में इंजेक्ट किया गया था.
  3. आखिर में, नतीजे देखें.

अन्य संसाधन

Android पर टेस्टिंग के बारे में ज़्यादा जानने के लिए, ये संसाधन देखें: