Cihaz döndürme ve ekranı açma gibi yaygın yapılandırma değişiklikleri geçirirken uygulamanızı test etmek için Espresso Device API'yi kullanın. Espresso Device API, bu yapılandırma değişikliklerini sanal bir cihazda simüle etmenize olanak tanır ve testlerinizi eşzamanlı olarak yürütür. Böylece, aynı anda yalnızca bir kullanıcı arayüzü işlemi veya beyanı gerçekleşir ve test sonuçlarınızın güvenilirliği artar. Espresso ile kullanıcı arayüzü testi yazmaya yeni başladıysanız dokümanlarına göz atın.
Espresso Device API'yi kullanmak için aşağıdakilere ihtiyacınız vardır:
- Android Studio Iguana veya sonraki sürümler
- Android Gradle eklentisi 8.3 veya daha yeni sürümler
- Android Emulator 33.1.10 veya sonraki sürümler
- API seviyesi 24 veya daha yeni sürümleri çalıştıran Android sanal cihaz
Projenizi Espresso Device API için ayarlama
Projenizi Espresso Device API'yi destekleyecek şekilde ayarlamak için aşağıdakileri yapın:
Testin test cihazına komut iletmesine izin vermek için
androidTest
kaynak kümesindeki manifest dosyasınaINTERNET
veACCESS_NETWORK_STATE
izinlerini ekleyin:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
gradle.properties
dosyasındaenableEmulatorControl
deneysel işaretini etkinleştirin:android.experimental.androidTest.enableEmulatorControl=true
Modül düzeyinde derleme komut dosyasında
emulatorControl
seçeneğini etkinleştirin:Kotlin
testOptions { emulatorControl { enable = true } }
Groovy
testOptions { emulatorControl { enable = true } }
Modül düzeyindeki derleme komut dosyasında Espresso Device kitaplığını projenize aktarın:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.1") }
Groovy
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.1' }
Ortak yapılandırma değişikliklerine karşı test etme
Espresso Device API, cihaz yapılandırma değişikliklerini simüle etmek için kullanabileceğiniz birden fazla ekran yönü ve katlanabilir duruma sahiptir.
Ekran döndürmeye karşı test etme
Cihaz ekranı döndürüldüğünde uygulamanıza ne olacağını test etmeyi gösteren bir örnek aşağıda verilmiştir:
Öncelikle, tutarlı bir başlangıç durumu için cihazı dikey moda ayarlayın:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
Test yürütülürken cihazı yatay yönde ayarlayan bir test oluşturun:
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) ... }
Ekran döndürüldükten sonra kullanıcı arayüzünün yeni düzene beklendiği gibi uyum sağladığını kontrol edin.
@Test fun myRotationTest() { ... // Sets the device to landscape orientation during test execution. onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE) composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist() }
Ekranın açılmasına karşı test etme
Uygulamanız katlanabilir bir cihazdaysa ve ekran açılıyorsa ne olacağını test etmeyi gösteren bir örnek aşağıda verilmiştir:
Öncelikle
onDevice().setClosedMode()
numaralı telefonu arayarak cihaz katlanmış haldeyken testi yapın. Uygulamanızın düzeninin, kompakt ekran genişliğine uyarlandığından emin olun.@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
Tamamen açılmış duruma geçmek için
onDevice().setFlatMode()
işlevini çağırın. Uygulamanın düzeninin genişletilmiş boyut sınıfına uyarlandığından emin olun.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
Testlerinizin hangi cihazlara ihtiyacı olduğunu belirtme
Katlanabilir olmayan bir cihazda katlama işlemleri gerçekleştiren bir test çalıştırırsanız test büyük olasılıkla başarısız olur. Yalnızca çalışan cihazla alakalı testleri yürütmek için @RequiresDeviceMode
notunu kullanın. Test çalıştırıcı, test edilen yapılandırmayı desteklemeyen cihazlarda test çalıştırmayı otomatik olarak atlar. Cihaz şartı kuralını her teste veya bir test sınıfının tamamına ekleyebilirsiniz.
Örneğin, bir testin yalnızca düz bir yapılandırmaya açılmayı destekleyen cihazlarda çalıştırılması gerektiğini belirtmek için testinize aşağıdaki @RequiresDeviceMode
kodunu ekleyin:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}