Dengan API pengujian unit Glance, Anda dapat menguji kode Glance tanpa meng-inflate tampilan
atau memerlukan UI automator. Misalnya, API pengujian unit memungkinkan Anda memverifikasi
kondisi, seperti apakah elemen ada dalam daftar atau apakah kotak telah
dicentang, menggunakan pencocok seperti hasContentDescriptionEqualTo atau isChecked.
API ini ringan dan memerlukan lebih sedikit penyiapan, sehingga Anda dapat melakukan pengembangan berbasis pengujian saat mengembangkan setiap bagian widget dan mengaturnya untuk meningkatkan penggunaan ulang kode.
Penyiapan
Dependensi yang diperlukan untuk menggunakan library pengujian unit ditampilkan dalam contoh berikut:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Struktur pengujian
Atur fungsi composable di luar class GlanceAppWidget untuk memungkinkan
penggunaan kembali kode dan pengujian unit. Kurangi kompleksitas unit yang sedang diuji
sebanyak mungkin.
Anda dapat menargetkan Composable pengujian dengan provideComposable dan menjalankan pengujian unit
pada satu atau beberapa node Glance dengan onNode atau onAllNodes.
private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!" class MyGlanceComposableTest { @Test fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest { // Set the composable to test provideComposable { MyNewsItemComposable(FAKE_HEADLINE) } // Perform assertions onNode(hasTestTag("headline")) .assertHasText(FAKE_HEADLINE) } @Composable fun MyNewsItemComposable(headline: String) { Row { Text( text = headline, modifier = GlanceModifier.semantics { testTag = "headline" }, ) } } }
Menetapkan konteks dan ukuran untuk pengujian
Jika fungsi composable Anda membaca konteks menggunakan metode LocalContext.current(), Anda harus menetapkan konteks menggunakan setContext(). Jika tidak, langkah ini bersifat opsional.
Anda dapat menggunakan framework pengujian unit Android berbasis JVM, seperti Robolectric, untuk menyediakan konteks.
Jika fungsi composable Anda mengakses LocalSize, tetapkan ukuran yang diinginkan
untuk pengujian sebelum menyediakan composable dalam pengujian. Ukuran defaultnya adalah
349.dp x 455.dp, yang setara dengan widget 5x4 yang ditampilkan di perangkat Pixel 4
dalam mode potret.
- Jika AppWidget Anda menggunakan
sizeMode == Single, Anda dapat menetapkannya keminWidthdanminHeightdalam fileinfo.xmlwidget Anda. - Jika AppWidget Anda menggunakan
sizeMode == Exact, Anda dapat mengidentifikasi ukuran yang akan diuji dengan cara yang mirip dengan cara Anda menentukan ukuran untuk widget dan mengidentifikasi ukuran lanskap dan potret yang mungkin muncul di widget dan mengujinya. - Jika AppWidget menggunakan
sizeMode == Responsive, Anda dapat menetapkannya ke salah satu ukuran dari daftar yang Anda berikan saat menentukansizeMode.
Durasi default untuk waktu tunggu pengujian adalah 1 detik, tetapi Anda dapat meneruskan durasi
kustom sebagai argumen ke metode runGlanceAppWidgetUnitTest jika infrastruktur pengujian
Anda menerapkan waktu tunggu yang berbeda.
Untuk mengetahui informasi dan contoh kode selengkapnya, lihat dokumentasi referensi untuk
runGlanceAppWidgetUnitTest.