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

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

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

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

برای استفاده از قانون تست، مصنوع تست را به فایل 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 استفاده کنید.