برنامههای واقعیت افزوده اغلب برای عملکرد به موقعیتهای خاص دنیای واقعی وابسته هستند. به عنوان مثال، برنامه شما ممکن است برای قرار دادن یک صفحه بازی مجازی به یک سطح شناسایی شده، مانند یک میز، نیاز داشته باشد. برای آزمایش برنامه خود در برابر سناریوهای مختلف، از APIهای قانون تست ARCore برای نوشتن تستها در یک محیط تست ARCore کنترل شده استفاده کنید. APIها تنظیمات و وضعیت جلسه را مدیریت میکنند، بنابراین میتوانید روی آزمایش منطق اصلی برنامه خود تمرکز کنید.
اضافه کردن وابستگیهای کتابخانهای
برای استفاده از قانون تست ARCore، این وابستگیها را به فایل build.gradle برنامه خود اضافه کنید:
کاتلین
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 را نیز اضافه کنید:
کاتلین
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تزریق شدهاند. - در نهایت، نتایج را بررسی کنید.
منابع اضافی
برای اطلاعات بیشتر در مورد آزمایش در اندروید، به منابع زیر مراجعه کنید: