Menguji tata letak Compose

Uji UI aplikasi Anda untuk memverifikasi bahwa perilaku kode Compose sudah benar. Dengan begitu, Anda dapat mengetahui error lebih awal dan meningkatkan kualitas aplikasi.

Compose menyediakan kumpulan API pengujian untuk menemukan elemen, memverifikasi atributnya, dan melakukan tindakan pengguna. API ini juga mencakup fitur lanjutan seperti manipulasi waktu. Gunakan API ini untuk membuat pengujian tangguh yang memverifikasi perilaku aplikasi Anda.

Penayangan

Jika Anda menggunakan tampilan, bukan Compose, lihat bagian umum Menguji aplikasi di Android.

Secara khusus, tempat yang baik untuk memulai adalah panduan Mengotomatiskan pengujian UI. Panduan ini menjabarkan 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 memberi makna pada bagian-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: Di 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 ringkasan semua topik utama yang harus Anda pelajari tentang 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 yang disebut AndroidComposeTestRule. Melalui aturan ini, Anda dapat menetapkan konten Compose atau mengakses aktivitas. Anda membuat aturan menggunakan fungsi factory, baik createComposeRule atau, jika Anda 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

  • Aplikasi pengujian 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 pengujian berinstrumen juga. 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 bagi pengguna, Anda harus menguji berbagai ukuran layar.
  • Espresso: Meskipun ditujukan untuk UI berbasis View, pengetahuan Espresso masih dapat berguna untuk beberapa aspek pengujian Compose.

Codelab

Untuk mempelajari lebih lanjut, coba codelab Pengujian Jetpack Compose.

Contoh