اختبار تطبيقك باستخدام قواعد اختبار ARCore

أجهزة XR المشمولة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة XR.
سماعات الرأس بنظام الواقع الممتد
نظارات سلكية بنظام الواقع الممتد
نظارات الصوت
والعرض

تعتمد تطبيقات الواقع المعزّز غالبًا على مواقف معيّنة من العالم الحقيقي لتعمل. على سبيل المثال، قد يتطلّب تطبيقك رصد سطح، مثل طاولة، من أجل وضع لوحة ألعاب افتراضية. ولاختبار تطبيقك في سيناريوهات مختلفة، استخدِم واجهات برمجة التطبيقات لقاعدة اختبار ARCore لكتابة الاختبارات في بيئة اختبار ARCore خاضعة للتحكّم. وتتعامل واجهات برمجة التطبيقات مع إعداد الجلسة وحالتها، ما يتيح لك التركيز على اختبار المنطق الأساسي لتطبيقك.

إضافة تبعيات المكتبة

لاستخدام قاعدة اختبار 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"
}

إذا كان تطبيقك يعتمد على XR SceneCore، عليك أيضًا تضمين تبعية اختبار XR 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، يُرجى الاطّلاع على المراجع التالية: