Mengotomatiskan pengelolaan perangkat virtual dengan aturan pengujian yang diproyeksikan

projectedtestrule, pengelolaan perangkat virtual

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Kacamata Audio &
Tampilan

Sulit untuk mengotomatiskan pengujian jika kode bergantung pada hardware fisik. Misalnya, Anda mungkin perlu menghubungkan dan memutuskan koneksi perangkat fisik secara manual untuk memverifikasi status koneksi. Dengan semua jenis yang berbeda, kemampuan, dan status perangkat dari kacamata audio dan kacamata tampilan, tantangan ini dapat menjadi lebih kompleks. Untuk menguji serangkaian kasus yang beragam ini, gunakan Projected Test Rule API untuk mengotomatiskan penyiapan dan pengelolaan lingkungan pengujian yang diproyeksikan. Library ini menangani pembuatan perangkat yang diproyeksikan, status koneksi, dan verifikasi kemampuan, sehingga Anda dapat berfokus pada pengujian logika inti aplikasi. Gunakan API ini untuk membuat rangkaian pengujian yang kuat tanpa menulis kode boilerplate.

Menambahkan dependensi library

Untuk menggunakan aturan pengujian, tambahkan artefak pengujian ke file build.gradle aplikasi Anda:

Groovy

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

Kotlin

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

Menyiapkan aturan pengujian

Untuk menyiapkan aturan pengujian dasar, beri anotasi aturan di class pengujian Anda. Secara default, aturan ini menghubungkan perangkat yang diproyeksikan dan mengaktifkan kemampuan visualnya sebelum setiap pengujian dijalankan.

@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()
}

Menguji skenario umum lainnya

Setelah menyiapkan lingkungan pengujian yang diproyeksikan dengan aturan pengujian dasar, uji skenario umum lainnya untuk kacamata audio dan kacamata tampilan guna memverifikasi fungsi aplikasi Anda.

Menguji pemutusan koneksi perangkat

Untuk menguji reaksi aplikasi saat koneksi dengan kacamata terputus, gunakan properti isDeviceConnected:

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

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

Poin-poin penting tentang kode

  • Aturan ini mereset properti seperti isDeviceConnected ke nilai defaultnya sebelum setiap pengujian. Anda tidak perlu mereset properti ini secara manual dalam metode @After.

Menguji kemampuan perangkat yang berbeda

Kacamata tampilan dapat menampilkan UI yang dibuat dengan Jetpack Compose Glimmer. Secara default, ProjectedTestRule mengaktifkan CAPABILITY_VISUAL_UI. Untuk menentukan dengan tepat apa yang didukung perangkat yang diproyeksikan, gunakan kumpulan capabilities. Hal ini berguna untuk memverifikasi bahwa aplikasi Anda memeriksa dukungan hardware dengan benar sebelum mencoba memproyeksikan konten ke kacamata.

@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)
    }
}

Poin-poin penting tentang kode

  • Aturan ini mereset properti seperti capabilities ke nilai defaultnya sebelum setiap pengujian. Anda tidak perlu mereset properti ini secara manual dalam metode @After.
  • Jika Anda perlu memverifikasi perilaku secara khusus untuk aktivitas yang diproyeksikan ke kacamata tampilan, gunakan launchTestProjectedDeviceActivity.