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