مدیریت دستگاه مجازی را با قوانین آزمایش پیش‌بینی‌شده خودکارسازی کنید

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

وقتی کد به سخت‌افزار فیزیکی وابسته باشد، خودکارسازی آزمایش‌ها دشوار است. برای مثال، ممکن است لازم باشد دستگاه فیزیکی را به‌صورت دستی متصل و قطع کنید تا وضعیت اتصال را درستی‌سنجی کنید. با درنظر گرفتن همه انواع مختلف، قابلیت‌ها، و وضعیت‌های دستگاه عینک‌های صوتی و عینک‌های نمایشگر، این چالش می‌تواند پیچیده‌تر هم بشود. برای آزمایش این مجموعه متنوع از موارد، از میاناهای برنامه‌سازی کاربردی قانون آزمایش پیش‌بینی‌شده برای خودکارسازی راه‌اندازی و مدیریت محیط آزمایش پیش‌بینی‌شده استفاده کنید. این کتابخانه ایجاد دستگاه پیش‌بینی‌شده، وضعیت‌های اتصال، و درستی‌سنجی قابلیت را مدیریت می‌کند، بنابراین می‌توانید روی آزمایش منطق اصلی برنامه‌تان تمرکز کنید. از این میاناهای برنامه‌سازی کاربردی برای ساختن مجموعه‌های آزمایشی قدرتمند بدون نوشتن کد کلیشه‌ای استفاده کنید.

افزودن وابستگی‌های کتابخانه

برای استفاده از قانون آزمایش، عنصر آزمایشی را به فایل build.gradle برنامه‌تان اضافه کنید:

شیک

dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}

کاتلین

dependencies {
  // JXR Projected testing library
  testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}

راه‌اندازی قانون آزمایش

برای راه‌اندازی قانون آزمایشی پایه، قانون را در کلاس آزمایشی‌تان نشانه‌گذاری کنید. به‌طور پیش‌فرض، قانون دستگاه نمایش‌داده‌شده را متصل می‌کند و قابلیت‌های دیداری آن را قبل‌از اجرای هر آزمایش فعال می‌کند.

@get:Rule
val projectedTestRule = ProjectedTestRule()

private val context: Context
    get() = ApplicationProvider.getApplicationContext()

@Test
fun testWithConnectedDevice() {
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue()
}

سناریوهای رایج دیگر را آزمایش کنید

اکنون که محیط آزمایش پیش‌بینی‌شده خود را با قانون آزمایش پایه راه‌اندازی کرده‌اید، سناریوهای رایج دیگر را برای عینک‌های صوتی و عینک‌های نمایشگر آزمایش کنید تا عملکرد برنامه‌تان را تأیید کنید.

آزمایش قطع اتصال دستگاه

برای آزمایش اینکه برنامه شما هنگام قطع شدن اتصال با عینک چه واکنشی نشان می‌دهد، از دارایی isDeviceConnected استفاده کنید:

@Test
fun testDeviceDisconnection() {
    // manually disconnect the device via the rule
    projectedTestRule.isDeviceConnected = false

    assertThrows(IllegalStateException::class.java) {
        ProjectedContext.createProjectedDeviceContext(context)
    }
}

نکات کلیدی درباره کد

  • این قانون ویژگی‌هایی مثل isDeviceConnected را قبل‌از هر آزمایشی به پیش‌فرض‌هایشان بازنشانی می‌کند. لازم نیست این دارایی‌ها را به‌صورت دستی در @After روش‌ها بازنشانی کنید.

قابلیت‌های مختلف دستگاه را آزمایش کنید

عینک‌های نمایشگر می‌توانند میاناهای کاربر ساخته‌شده با Jetpack Compose Glimmer را نمایش دهند. به‌طور پیش‌فرض، ProjectedTestRule CAPABILITY_VISUAL_UI را فعال می‌کند. برای تعریف دقیق اینکه دستگاه پخش‌کننده از چه چیزهایی پشتیبانی می‌کند، از capabilities مجموعه استفاده کنید. این کار برای تأیید اینکه برنامه شما قبل‌از تلاش برای پخش محتوا در عینک، پشتیبانی سخت‌افزاری را به‌درستی بررسی می‌کند مفید است.

@Test
fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity ->
    // disable display capability
    projectedTestRule.capabilities = setOf()

    runBlocking {
        // create the controller
        val controller = ProjectedDeviceController.create(activity)

        // verify the app recognizes the lack of visual UI support
        assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI)
    }
}

نکات کلیدی درباره کد

  • این قانون ویژگی‌هایی مثل capabilities را قبل‌از هر آزمایشی به پیش‌فرض‌هایشان بازنشانی می‌کند. لازم نیست این دارایی‌ها را به‌صورت دستی در @After روش‌ها بازنشانی کنید.
  • وقتی نیاز دارید رفتار را به‌طور خاص برای فعالیتی که برای نمایش در عینک پیش‌بینی شده است درستی‌سنجی کنید، از launchTestProjectedDeviceActivity استفاده کنید.