Gunakan Espresso Device API untuk menguji aplikasi Anda saat perangkat mengalami perubahan konfigurasi umum, seperti rotasi dan pembukaan layar. Espresso Device API memungkinkan Anda menyimulasikan perubahan konfigurasi ini di perangkat virtual dan menjalankan pengujian secara sinkron, sehingga hanya satu tindakan atau pernyataan UI yang terjadi dalam satu waktu dan hasil pengujian Anda lebih andal. Jika Anda baru menggunakan Espresso untuk menulis pengujian UI, lihat dokumentasinya.
Untuk menggunakan Espresso Device API, Anda memerlukan hal berikut:
- Android Studio Iguana atau yang lebih baru
- Plugin Android Gradle 8.3 atau yang lebih baru
- Android Emulator 33.1.10 atau yang lebih baru
- Perangkat virtual Android yang menjalankan API level 24 atau yang lebih baru
Menyiapkan project untuk Espresso Device API
Untuk menyiapkan project agar mendukung Espresso Device API, lakukan hal berikut:
Agar pengujian dapat meneruskan perintah ke perangkat pengujian, tambahkan izin
INTERNETdanACCESS_NETWORK_STATEke file manifes di set sumberandroidTest:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Aktifkan flag eksperimental
enableEmulatorControldi filegradle.properties:android.experimental.androidTest.enableEmulatorControl=true
Aktifkan opsi
emulatorControldi skrip build level modul:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
Di skrip build level modul, impor library Espresso Device ke project Anda:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.1") }
Groovy
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.1' }
Menguji perubahan konfigurasi umum
Espresso Device API memiliki beberapa orientasi layar dan status perangkat foldable yang dapat Anda gunakan untuk menyimulasikan perubahan konfigurasi perangkat.
Menguji rotasi layar
Berikut adalah contoh cara menguji apa yang terjadi pada aplikasi Anda saat layar perangkat berputar:
Pertama, untuk status awal yang konsisten, setel perangkat ke mode potret mode:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
Buat pengujian yang menetapkan perangkat ke orientasi lanskap selama eksekusi pengujian:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
Setelah layar berputar, periksa apakah UI beradaptasi dengan tata letak baru seperti yang diharapkan.
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
Menguji pembukaan layar
Berikut adalah contoh cara menguji apa yang terjadi pada aplikasi Anda jika aplikasi tersebut berada di perangkat foldable dan layar terbuka:
Pertama, uji dengan perangkat dalam status terlipat dengan memanggil
onDevice().setClosedMode(). Pastikan tata letak aplikasi Anda beradaptasi dengan lebar layar yang ringkas.@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
Untuk bertransisi ke status yang sepenuhnya terbuka, panggil
onDevice().setFlatMode(). Periksa apakah tata letak aplikasi beradaptasi dengan class ukuran yang diperluas.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
Menentukan perangkat yang diperlukan pengujian
Jika Anda menjalankan pengujian yang melakukan tindakan pelipatan pada perangkat yang tidak foldable, pengujian kemungkinan akan gagal. Untuk hanya menjalankan pengujian yang relevan dengan perangkat yang sedang berjalan, gunakan anotasi @RequiresDeviceMode. Peluncur pengujian secara otomatis akan melewati pengujian pada perangkat yang tidak mendukung konfigurasi yang sedang diuji. Anda dapat menambahkan aturan persyaratan perangkat ke setiap pengujian atau seluruh class pengujian.
Misalnya, untuk menentukan bahwa pengujian hanya boleh dijalankan di perangkat yang mendukung pembukaan ke konfigurasi datar, tambahkan kode @RequiresDeviceMode berikut ke pengujian Anda:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}