Gunakan Espresso Device API untuk menguji aplikasi Anda saat perangkat mengalami perubahan konfigurasi umum, seperti rotasi dan bentang layar. Dengan Espresso Device API, Anda dapat menyimulasikan perubahan konfigurasi ini pada perangkat virtual dan menjalankan pengujian secara sinkron, sehingga hanya satu tindakan atau pernyataan UI yang terjadi dalam satu waktu dan hasil pengujian Anda lebih dapat diandalkan. Jika Anda baru pertama kali menulis pengujian UI dengan Espresso, 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 tinggi
- Android Emulator 33.1.10 atau yang lebih tinggi
- Perangkat virtual Android yang menjalankan API level 24 atau yang lebih tinggi
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
INTERNET
danACCESS_NETWORK_STATE
ke file manifes dalam set sumberandroidTest
:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
Aktifkan tanda eksperimental
enableEmulatorControl
di filegradle.properties
:android.experimental.androidTest.enableEmulatorControl=true
Aktifkan opsi
emulatorControl
dalam skrip build level modul:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
Dalam skrip build level modul, impor library Perangkat Espresso ke project Anda:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1") }
Groovy
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:3.5.1' }
Menguji dengan perubahan konfigurasi umum
Espresso Device API memiliki beberapa orientasi layar dan status perangkat foldable yang dapat Anda gunakan untuk menyimulasikan perubahan konfigurasi perangkat.
Menguji dengan rotasi layar
Berikut adalah contoh cara menguji apa yang terjadi pada aplikasi Anda saat layar perangkat diputar:
Pertama, untuk status awal yang konsisten, setel perangkat ke mode potret:
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 uji:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
Setelah layar diputar, 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() }
Uji dengan layar yang dibentangkan
Berikut adalah contoh cara menguji apa yang terjadi pada aplikasi Anda jika berada di perangkat foldable dan layar terbuka:
Pertama, uji dengan perangkat dalam keadaan 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 dibentangkan, panggil
onDevice().setFlatMode()
. Pastikan 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 dibutuhkan pengujian Anda
Jika Anda menjalankan pengujian yang melakukan tindakan lipat pada perangkat yang tidak
dapat dilipat, pengujian mungkin akan gagal. Untuk menjalankan pengujian yang relevan saja
dengan perangkat yang berjalan, gunakan anotasi @RequiresDeviceMode
. Runner pengujian akan otomatis 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 pada perangkat yang mendukung
bentangan ke konfigurasi datar, tambahkan kode @RequiresDeviceMode
berikut
ke pengujian Anda:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}