Menguji tata letak Compose

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 mencakup 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 bagian Menguji aplikasi di Android umum.

Secara khusus, tempat yang tepat untuk memulai adalah panduan Mengotomatiskan pengujian UI. Panduan 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-bagian UI dan dihasilkan bersama hierarki UI.
  • Testing API: Compose menyediakan Testing API 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 hingga tidak ada aktivitas sebelum membuat pernyataan atau melakukan tindakan.
  • Interoperabilitas: Dalam aplikasi campuran, pengujian dapat berinteraksi dengan lancar dengan elemen berbasis Compose dan View, serta berintegrasi 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, 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

  • 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.

Codelab

Untuk mempelajari lebih lanjut, coba codelab Pengujian Jetpack Compose.

Contoh