Oluşturma, yaygın test çerçeveleriyle entegre olur.
Espresso ile birlikte çalışabilirlik
Karma uygulamalarda, Compose bileşenlerini görünüm hiyerarşilerinin içinde ve görünümlerinde Compose composable'lar içinde (AndroidView
composable aracılığıyla) bulabilirsiniz.
Her iki türle de eşleştirmek için gereken özel bir adım yoktur. Görünümleri Espresso'nun onView
ve Compose öğeleriyle ComposeTestRule
öğelerini eşleştirebilirsiniz.
@Test
fun androidViewInteropTest() {
// Check the initial state of a TextView that depends on a Compose state.
Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
// Click on the Compose button that changes the state.
composeTestRule.onNodeWithText("Click here").performClick()
// Check the new value.
Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}
UiAutomator ile birlikte çalışabilirlik
Varsayılan olarak, composable'lara UiAutomator'dan yalnızca yardımcı tanımlayıcıları (gösterilen metin, içerik açıklaması vb.) göre erişilebilir. Modifier.testTag
kullanan herhangi bir composable'a erişmek istiyorsanız ilgili composable'ın alt ağacı için testTagsAsResourceId
semantik özelliğini etkinleştirmeniz gerekir. Bu davranışı etkinleştirmek, kaydırılabilir composable'lar (ör. LazyColumn
) gibi başka bir benzersiz herkese açık kullanıcı adı olmayan composable'lar için yararlıdır.
Modifier.testTag
ile iç içe yerleştirilmiş tüm composable'lara UiAutomator'dan erişilebildiğinden emin olmak için anlamsal özelliği composables hiyerarşinizde yalnızca bir kez yüksek olacak şekilde etkinleştirin.
Scaffold(
// Enables for all composables in the hierarchy.
modifier = Modifier.semantics {
testTagsAsResourceId = true
}
){
// Modifier.testTag is accessible from UiAutomator for composables nested here.
LazyColumn(
modifier = Modifier.testTag("myLazyColumn")
){
// Content
}
}
Modifier.testTag(tag)
ile tüm composable'lara resourceName
ile aynı tag
kullanılarak By.res(resourceName)
kullanılarak erişilebilir.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
Ek Kaynaklar
- Android'de uygulamaları test etme: Ana Android testi açılış sayfası, testlerle ilgili temel bilgiler ve tekniklere dair daha kapsamlı bir bakış sunar.
- Testlerle ilgili temel bilgiler: Android uygulamalarını test etmenin ardındaki temel kavramlar hakkında daha fazla bilgi edinin.
- Yerel testler: Kendi iş istasyonunuzda yerel olarak bazı testler yapabilirsiniz.
- Araçlı testler: Araçlı testler de çalıştırmak iyi bir uygulamadır. Yani, doğrudan cihaz üzerinde yapılan testler.
- Sürekli entegrasyon: Sürekli entegrasyon, testlerinizi dağıtım ardışık düzeninize entegre etmenize olanak tanır.
- Farklı ekran boyutlarını test edin: Kullanıcıların kullanımına sunulan çok sayıda cihaz arasından farklı ekran boyutlarını test etmeniz gerekir.
- Espresso: Görünüm tabanlı kullanıcı arayüzlerinde kullanılmak üzere tasarlanmış olsa da Espresso bilgisi, Oluşturma testinin bazı bölümlerinde yine de yararlı olabilir.