برنامههای واقعیت افزوده اغلب برای عملکرد به موقعیتهای خاص دنیای واقعی وابسته هستند. برای مثال، برنامهتان ممکن است برای قرار دادن صفحه بازی مجازی به سطحی تشخیصدادهشده، مثل میز، نیاز داشته باشد. برای آزمایش کردن برنامه در سناریوهای مختلف، از میاناهای برنامهسازی کاربردی قانون آزمایش ARCore برای نوشتن آزمایشها در محیط آزمایش کنترلشده ARCore استفاده کنید. میاناهای برنامهسازی کاربردی تنظیم و وضعیت جلسه را مدیریت میکنند، بنابراین میتوانید روی آزمایش منطق اصلی برنامهتان تمرکز کنید.
افزودن وابستگیهای کتابخانه
برای استفاده از قانون آزمایش ARCore، این وابستگیها را به فایل build.gradle
برنامهتان اضافه کنید:
کاتلین
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-rc02") }
شیک
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-rc02" }
اگر برنامه شما به XR SceneCore وابسته است، وابستگی آزمایش XR SceneCore را نیز اضافه کنید:
کاتلین
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
شیک
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
راهاندازی قانون آزمایش
در آزمایش 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() runBlocking { 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، به منابع زیر مراجعه کنید: