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

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

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

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

لاستخدام قاعدة اختبار ARCore، أضِف هذه التبعيات إلى ملف build.gradle الخاص بتطبيقك:

Kotlin

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

أنيق

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

إذا كان تطبيقك يعتمد على XR SceneCore، ضِّمن أيضًا تبعية اختبار XR SceneCore:

Kotlin

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

أنيق

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

إعداد قاعدة الاختبار

في اختبار 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(context = activity, coroutineContext = testDispatcher)
    session = (sessionCreateResult as SessionCreateSuccess).session

    // Configure the session.
    session.configure(Config.Builder(session.config).setHandTracking(HandTrackingMode.BOTH).build())
}

في الخطوة @Before، اضبط بيئة الاختبار، بما في ذلك الأذونات المطلوبة وإعداد الجلسة.

إنشاء أُطُر الاختبار

أنشِئ إطار اختبار لاختبار سيناريو معيّن. في هذا المثال، نختبر ما إذا كان جهاز رصد إيماءات تتبُّع اليد يعمل مع بيانات الاختبار:

@Test
fun test_thumbsUp() = runTest(testDispatcher) {
    arCoreTestRule.rightHandTester.isVisible = true
    arCoreTestRule.rightHandTester.handJointMap = gestureThumbsUp
    advanceUntilIdle()
    val handState = Hand.right(session).state.value

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

غالبًا ما يحتوي اختبار الوحدة على الخطوات التالية:

  1. لإعداد الاختبار، استخدِم ArCoreTestRule لإدخال بيانات الاختبار. يحتوي هذا الكائن على بيانات البيئة التي يقرأها تطبيقك من الجلسة. استخدِم TestScope.advanceUntilIdle للتأكّد من أنّ النظام جاهز لإجراء الاختبار. في هذا المثال، يتم تفعيل اليد اليمنى، ويتم استخدام بيانات الوضع لملء بيانات مفصل اليد.
  2. بعد ذلك، نفِّذ الاختبار. لا يحتاج تطبيقك إلى سلوك خاص لاستخدام البيانات التي تم إدخالها: تستخدِم Session البيانات التي تم إدخالها في ArCoreTestRule.
  3. أخيرًا، تحقَّق من النتائج.

مراجع إضافية

لمزيد من المعلومات حول الاختبار على Android، يُرجى الرجوع إلى المراجع التالية: