تعتمد تطبيقات الواقع المعزّز غالبًا على مواقف معيّنة من العالم الحقيقي لتعمل. على سبيل المثال، قد يتطلّب تطبيقك رصد سطح، مثل طاولة، من أجل وضع لوحة ألعاب افتراضية. ولاختبار تطبيقك في سيناريوهات مختلفة، استخدِم واجهات برمجة التطبيقات لقاعدة اختبار 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() }
يتضمّن اختبار الوحدة غالبًا الخطوات التالية:
- لإعداد الاختبار، استخدِم
ArCoreTestRuleلإدخال بيانات الاختبار. يحتوي هذا العنصر على بيانات البيئة التي يقرأها تطبيقك من الجلسة. استخدِمTestScope.advanceUntilIdleللتأكّد من أنّ النظام جاهز لإجراء الاختبار. في هذا المثال، يتم تفعيل اليد اليمنى، ويتم استخدام بيانات الوضع لتعبئة بيانات مفاصل اليد. - بعد ذلك، نفِّذ الاختبار. لا يحتاج تطبيقك إلى سلوك خاص لاستخدام البيانات التي تم إدخالها، لأنّ
Sessionيستخدم البيانات التي تم إدخالها فيArCoreTestRule. - أخيرًا، تحقَّق من النتائج.
مراجع إضافية
لمزيد من المعلومات حول الاختبار على Android، يُرجى الاطّلاع على المراجع التالية: