Uji UI aplikasi untuk memverifikasi bahwa perilaku kode Compose Anda sudah benar. Hal ini memungkinkan Anda mendeteksi kesalahan lebih awal dan meningkatkan kualitas aplikasi.
Compose menyediakan serangkaian API pengujian untuk menemukan elemen, memverifikasi atributnya, dan melakukan tindakan pengguna. API ini juga menyertakan fitur lanjutan seperti manipulasi waktu. Gunakan API ini untuk membuat pengujian andal yang memverifikasi perilaku aplikasi.
View
Jika Anda menggunakan tampilan, bukan Compose, lihat bagian Menguji aplikasi di Android umum.
Secara khusus, tempat yang tepat untuk memulai adalah panduan Mengotomatiskan pengujian UI. Artikel ini menjelaskan cara mengotomatiskan pengujian yang berjalan di perangkat, termasuk saat menggunakan tampilan.
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 dibuat bersama hierarki UI.
- API Pengujian: Compose menyediakan API pengujian untuk menemukan elemen, membuat pernyataan tentang status dan propertinya, serta melakukan tindakan untuk menyimulasikan interaksi pengguna.
- Sinkronisasi: Secara default, pengujian Compose otomatis disinkronkan dengan UI, menunggu tidak ada aktivitas sebelum membuat pernyataan atau melakukan tindakan.
- Interoperabilitas: Dalam aplikasi campuran, pengujian dapat berinteraksi secara lancar dengan elemen berbasis Compose dan View, serta terintegrasi dengan framework pengujian lainnya.
Tips praktis pengujian
Lihat tips praktis pengujian untuk mengetahui ringkasan semua topik utama yang harus Anda pelajari tentang pengujian di Compose.
Penyiapan
Siapkan aplikasi Anda untuk 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
yang disebut AndroidComposeTestRule
. Melalui aturan ini, Anda dapat menetapkan konten
Compose atau mengakses aktivitas. Anda membuat aturan menggunakan fungsi factory,
baik createComposeRule
maupun, jika memerlukan akses ke suatu 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: Halaman landing 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 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 beberapa perangkat yang tersedia untuk pengguna, Anda harus menguji berbagai ukuran layar.
- Espresso: Meskipun ditujukan untuk UI berbasis View, pengetahuan Espresso masih dapat membantu untuk beberapa aspek pengujian Compose.
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