projectedtestrule, pengelolaan perangkat virtual
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
isDeviceConnectedke 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
capabilitieske 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.