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

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

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

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

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

منابع بیشتر

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