Menguji tata letak Compose

Uji UI aplikasi Anda untuk memverifikasi bahwa perilaku kode Compose sudah benar. Hal ini memungkinkan Anda menemukan error lebih awal dan meningkatkan kualitas aplikasi.

Compose menyediakan kumpulan 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.

Penayangan

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

Secara khusus, sebaiknya mulai dengan 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-bagian UI dan dihasilkan 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 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 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 uji instrumentasi. 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