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
isDeviceConnectedke 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
capabilitieske 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.