برنامه خود را با قوانین تست ARCore آزمایش کنید

دستگاه‌های XR قابل اجرا
این راهنما به شما کمک می‌کند تا برای این نوع دستگاه‌های XR تجربه ایجاد کنید.
هدست‌های XR
عینک‌های XR سیمی
صوتی و
عینک نمایش

برنامه‌های واقعیت افزوده اغلب برای عملکرد به موقعیت‌های خاص دنیای واقعی وابسته هستند. به عنوان مثال، برنامه شما ممکن است برای قرار دادن یک صفحه بازی مجازی به یک سطح شناسایی شده، مانند یک میز، نیاز داشته باشد. برای آزمایش برنامه خود در برابر سناریوهای مختلف، از 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()
}

یک تست واحد اغلب شامل مراحل زیر است:

  1. برای تنظیم تست، از ArCoreTestRule برای تزریق داده‌های تست استفاده کنید. این شیء شامل داده‌های محیطی است که برنامه شما از جلسه می‌خواند. از TestScope.advanceUntilIdle برای اطمینان از آماده بودن سیستم برای انجام تست استفاده کنید. در این مثال، دست راست فعال است و از داده‌های ژست برای پر کردن داده‌های مفصل دست استفاده می‌شود.
  2. سپس، تست را انجام دهید. برنامه شما برای استفاده از داده‌های تزریق‌شده نیازی به رفتار خاصی ندارد: Session از داده‌هایی استفاده می‌کند که به ArCoreTestRule تزریق شده‌اند.
  3. در نهایت، نتایج را بررسی کنید.

منابع اضافی

برای اطلاعات بیشتر در مورد آزمایش در اندروید، به منابع زیر مراجعه کنید: