Cihaz yaygın olarak karşılaştığında uygulamanızı test etmek için Espresso Device API'yi kullanın döndürme ve ekran açma gibi yapılandırma değişiklikleridir. Espresso Device API, bu yapılandırma değişikliklerini sanal bir cihazda simüle etmenizi sağlar. Testlerinizi eşzamanlı olarak yürüttüğünden ve test sonuçlarınızın daha güvenilir olmasını sağlar. Kullanıcı arayüzü yazmaya yeni başladıysanız test etmek için belgelerine bakın.
Espresso Device API'yi kullanmak için gerekenler:
- Android Studio Iguana veya sonraki sürümler
- Android Gradle eklentisi 8.3 veya sonraki sürümler
- Android Emulator 33.1.10 veya sonraki sürümler
- API düzeyi 24 veya sonraki sürümleri çalıştıran Android sanal cihaz
Espresso Device API için projenizi ayarlama
Projenizi Espresso Device API'yi destekleyecek şekilde ayarlamak için aşağıdakileri yapın:
Test geçme komutlarının test cihazına erişmesine izin vermek için
androidTest
kaynak kümesindeki manifest dosyası içinINTERNET
veACCESS_NETWORK_STATE
izinleri:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
enableEmulatorControl
deneysel işaretinigradle.properties
dosyası:android.experimental.androidTest.enableEmulatorControl=true
Modül düzeyinde derlemede
emulatorControl
seçeneğini etkinleştir komut dosyası:Kotlin
testOptions { emulatorControl { enable = true } }
Eski
testOptions { emulatorControl { enable = true } }
Modül düzeyindeki derleme komut dosyasında Espresso Cihazı kitaplığını içe aktarın projenize ekleyin:
Kotlin
dependencies { androidTestImplementation("androidx.test.espresso:espresso-device:1.0.0-beta01") }
Eski
dependencies { androidTestImplementation 'androidx.test.espresso:espresso-device:1.0.0-beta01' }
Sık karşılaşılan yapılandırma değişiklikleriyle karşılaştırarak test etme
Espresso Device API'de birden fazla ekran yönü ve katlanabilir cihaz simüle etmek için kullanabilirsiniz.
Ekran döndürme durumuna göre test et
Cihaz ekranı açıldığında uygulamanıza ne olduğunu nasıl test edeceğinize dair bir örneği aşağıda bulabilirsiniz: döner:
İlk olarak, tutarlı bir başlangıç durumu için cihazı dikey konuma ayarlayın. mod:
import androidx.test.espresso.device.action.ScreenOrientation import androidx.test.espresso.device.rules.ScreenOrientationRule ... @get:Rule val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
Test sırasında cihazı yatay yöne ayarlayan bir test oluşturun yürütme:
@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 uyarlandığından emin olun.
@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 açılmaya karşı test et
Uygulamanız katlanabilir cihazlarda olduğunda ne olacağını test etmek için aşağıdaki örneği inceleyebilirsiniz. cihaz ve ekran açıldığında:
İlk olarak, şu numarayı arayarak cihazı katlanmış durumda test edin:
onDevice().setClosedMode()
Uygulama düzeninizin küçük ekran genişliğine uyum sağlar.@Test fun myUnfoldedTest() { onDevice().setClosedMode() composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed() composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist() ... }
Tamamen açılmış duruma geçmek için şu numarayı arayın:
onDevice().setFlatMode()
Uygulama düzeninin şuna uyarlandığından emin olun: genişletilmiş boyut sınıfını kullanabilirsiniz.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
Testleriniz için hangi cihazlara ihtiyaç duyduğunuzu belirtin
Katlama özellikli olmayan bir cihazda katlama işlemi gerçekleştiren bir test gerçekleştiriyorsanız
büyük olasılıkla test başarısız olacaktır. Yalnızca alakalı testleri yürütmek
@RequiresDeviceMode
ek açıklamasını kullanın. Test koşucusu
özelliğini desteklemeyen cihazlarda çalıştırılan testleri otomatik olarak atlar
yapılandırmanın test edildiğini unutmayın. Cihaz gereksinimi kuralını her teste ekleyebilirsiniz
veya test sınıfının tamamı.
Örneğin, bir testin yalnızca
aşağıdaki @RequiresDeviceMode
kodunu ekleyin:
ekleyin:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
...
}