Uji UI aplikasi Anda untuk memverifikasi bahwa perilaku kode Compose benar. Hal ini memungkinkan Anda menemukan error lebih awal dan meningkatkan kualitas aplikasi.
Compose menyediakan kumpulan API pengujian untuk menemukan elemen, memverifikasi elemen tersebut atribut, dan melakukan tindakan pengguna. API ini juga menyertakan fitur lanjutan seperti manipulasi waktu. Gunakan API ini untuk membuat pengujian andal yang memverifikasi perilaku aplikasi Anda.
View
Jika Anda menggunakan tampilan, bukan Compose, lihat panduan umum Menguji aplikasi di Android.
Secara khusus, sebaiknya mulai dengan panduan Mengotomatiskan pengujian UI. Ini menjelaskan cara mengotomatiskan pengujian yang berjalan di perangkat, termasuk saat menggunakan penayangan.
Konsep Utama
Berikut adalah beberapa konsep utama untuk menguji kode Compose Anda.
- Semantik: Pengujian Compose berinteraksi dengan UI menggunakan semantik, yang memberikan makna pada bagian UI dan dihasilkan bersama UI hierarki sebelumnya.
- API Pengujian: Compose menyediakan API pengujian untuk menemukan elemen, membuat pernyataan tentang status dan propertinya, dan melakukan tindakan untuk melakukan simulasi interaksi pengguna.
- Sinkronisasi: Secara default, Compose menguji secara otomatis disinkronkan dengan UI, menunggunya tidak ada aktivitas sebelum membuat pernyataan atau melakukan tindakan.
- Interoperabilitas: Dalam aplikasi hybrid, pengujian dapat berinteraksi dengan lancar dengan elemen berbasis Compose dan View, serta berintegrasi dengan pengujian lainnya framework.
Tips praktis pengujian
Lihat tips praktis pengujian untuk mengetahui ringkasan semua topik utama yang harus Anda pelajari pengujian di Compose.
Penyiapan
Siapkan aplikasi agar Anda dapat menguji kode compose.
Pertama, tambahkan dependensi berikut ke file build.gradle
modul
yang berisi pengujian UI Anda:
// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
Modul ini mencakup ComposeTestRule
dan implementasi untuk Android
disebut AndroidComposeTestRule
. Melalui aturan ini, Anda dapat menetapkan Compose
atau mengakses aktivitas. Anda membangun aturan menggunakan {i>factory function<i},
createComposeRule
atau, jika memerlukan akses ke aktivitas,
createAndroidComposeRule
. Pengujian UI standar untuk Compose terlihat seperti ini:
// file: app/src/androidTest/java/com/package/MyComposeTest.kt
class MyComposeTest {
@get:Rule val composeTestRule = createComposeRule()
// use createAndroidComposeRule<YourActivity>() if you need access to
// an activity
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = fakeUiState, /*...*/)
}
}
composeTestRule.onNodeWithText("Continue").performClick()
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
}
}
Referensi Tambahan
- Menguji aplikasi di Android: Pengujian Android utama memberikan pandangan 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 {i>workstation<i} Anda sendiri.
- Pengujian berinstrumen: Bagus juga untuk menjalankan uji instrumentasi. Yaitu, pengujian yang berjalan secara langsung di perangkat.
- Continuous integration: Dengan continuous integration, Anda dapat mengintegrasikan pengujian ke dalam deployment {i>pipelines<i} yang sama.
- Menguji berbagai ukuran layar: Dengan beberapa perangkat yang tersedia untuk pengguna, Anda harus mengujinya pada layar ukuran.
- Espresso: Meskipun ditujukan untuk berbasis View UI, pengetahuan Espresso masih dapat membantu untuk beberapa aspek Compose pengujian.
Codelab
Untuk mempelajari lebih lanjut, coba codelab Pengujian Jetpack Compose.
Contoh
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Semantik di Compose
- Inset jendela di Compose
- Pertimbangan lainnya