API pengujian unit Glance memungkinkan Anda menguji kode Glance tanpa meng-inflate tampilan
atau membutuhkan
UI {i>automator<i}. Misalnya, API pengujian unit
memungkinkan Anda memverifikasi
kondisi, seperti apakah elemen berada dalam daftar atau
apakah kotak-kotak telah
dicentang, menggunakan pencocok seperti hasContentDescriptionEqualTo
atau isChecked
.
API ini ringan dan memerlukan lebih sedikit penyiapan, sehingga Anda dapat melakukan pengujian berdasarkan saat Anda mengembangkan setiap bagian widget dan mengaturnya untuk meningkatkan penggunaan ulang kode.
Penyiapan
Dependensi yang diperlukan untuk menggunakan library pengujian unit ditunjukkan dalam contoh berikut:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Uji struktur
Mengatur fungsi composable di luar class GlanceAppWidget
untuk mengaktifkan
penggunaan ulang kode dan pengujian unit. Kurangi kerumitan unit yang sedang diuji dengan
sebanyak mungkin.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
Menetapkan konteks dan ukuran untuk pengujian
Jika fungsi composable Anda membaca konteks menggunakan LocalContext.current()
, Anda harus menetapkan konteks menggunakan metode LocalContext.current()
.
Jika tidak, langkah ini bersifat opsional.
Anda bisa menggunakan framework pengujian unit Android berbasis JVM, seperti Roboletric, untuk memberikan 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 menggunakan
sizeMode == Single
, Anda dapat menetapkannya keminWidth
danminHeight
dalam fileinfo.xml
widget Anda. - Jika AppWidget menggunakan
sizeMode == Exact
, Anda dapat mengidentifikasi ukuran untuk uji dengan cara yang sama seperti cara Anda menentukan ukuran widget dan mengidentifikasi ukuran lanskap dan potret yang mungkin menampilkan widget Anda dan menguji kepada mereka. - Jika AppWidget menggunakan
sizeMode == Responsive
, Anda dapat menyetelnya ke salah satu ukuran dari daftar yang Anda berikan saat menetapkansizeMode
.
Durasi default untuk waktu tunggu pengujian adalah 1 detik, tetapi Anda dapat meneruskan
durasi sebagai argumen untuk metode runGlanceAppWidgetUnitTest
jika pengujian
infrastruktur menerapkan waktu tunggu yang berbeda.
Untuk informasi dan contoh kode lebih lanjut, lihat dokumentasi referensi untuk
runGlanceAppWidgetUnitTest