Compose terintegrasi dengan framework pengujian umum.
Interoperabilitas dengan Espresso
Dalam aplikasi campuran, Anda dapat menemukan komponen Compose di hierarki tampilan dan
tampilan di dalam composable Compose (melalui composable AndroidView
).
Tidak memerlukan langkah khusus untuk mencocokkan salah satu jenisnya. Anda mencocokkan tampilan dengan
onView
Espresso, dan elemen Compose dengan ComposeTestRule
.
@Test
fun androidViewInteropTest() {
// Check the initial state of a TextView that depends on a Compose state.
Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
// Click on the Compose button that changes the state.
composeTestRule.onNodeWithText("Click here").performClick()
// Check the new value.
Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}
Interoperabilitas dengan UiAutomator
Secara default, composable dapat diakses dari UiAutomator hanya dengan
deskripsi yang praktis (teks yang ditampilkan, deskripsi konten, dll.). Jika ingin
mengakses composable yang menggunakan Modifier.testTag
, Anda harus mengaktifkan
properti semantik testTagsAsResourceId
untuk subhierarki
composable tertentu. Mengaktifkan perilaku ini berguna untuk composable yang tidak memiliki
handle unik lainnya, seperti composable yang dapat di-scroll (misalnya, LazyColumn
).
Aktifkan properti semantik hanya sekali di hierarki composable untuk
memastikan semua composable bertingkat dengan Modifier.testTag
dapat diakses dari
UiAutomator.
Scaffold(
// Enables for all composables in the hierarchy.
modifier = Modifier.semantics {
testTagsAsResourceId = true
}
){
// Modifier.testTag is accessible from UiAutomator for composables nested here.
LazyColumn(
modifier = Modifier.testTag("myLazyColumn")
){
// Content
}
}
Setiap composable dengan Modifier.testTag(tag)
dapat diakses dengan penggunaan
By.res(resourceName)
menggunakan tag
yang sama seperti resourceName
.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
Referensi Tambahan
- Menguji aplikasi di Android: Halaman landing pengujian Android utama memberikan gambaran yang lebih luas tentang dasar-dasar dan teknik pengujian.
- Dasar-dasar pengujian: Pelajari lebih lanjut konsep inti di balik pengujian aplikasi Android.
- Pengujian lokal: Anda dapat menjalankan beberapa pengujian secara lokal, di workstation Anda sendiri.
- Pengujian berinstrumen: Sebaiknya jalankan juga pengujian berinstrumen. Artinya, pengujian yang berjalan langsung di perangkat.
- Continuous integration: Continuous integration memungkinkan Anda mengintegrasikan pengujian ke dalam pipeline deployment.
- Menguji berbagai ukuran layar: Dengan banyak perangkat yang tersedia bagi pengguna, Anda harus menguji berbagai ukuran layar.
- Espresso: Meskipun ditujukan untuk UI berbasis View, pengetahuan Espresso masih dapat membantu untuk beberapa aspek pengujian Compose.