Mengotomatiskan pengelolaan perangkat virtual dengan aturan pengujian yang diproyeksikan

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

Pengujian sulit diotomatiskan 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, kemampuan, dan status perangkat kacamata audio dan kacamata tampilan yang berbeda, tantangan ini bisa menjadi lebih rumit. Untuk menguji beragam kasus ini, gunakan API Aturan Pengujian yang Diproyeksikan 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 andal 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 pada aturan di class pengujian Anda. Secara default, aturan 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 fungsionalitas aplikasi Anda.

Berhenti menghubungkan perangkat pengujian

Untuk menguji reaksi aplikasi Anda 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 penting tentang kode

  • Aturan ini mereset properti seperti isDeviceConnected ke 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 dibangun dengan Jetpack Compose Glimmer. Secara default, ProjectedTestRule mengaktifkan CAPABILITY_VISUAL_UI. Untuk menentukan secara tepat apa yang didukung perangkat yang diproyeksikan, gunakan set 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 penting tentang kode

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