Compose, yaygın test çerçeveleriyle entegre olur.
Espresso ile birlikte çalışabilirlik
Karma bir uygulamada, Görünüm hiyerarşileri içinde Compose bileşenlerini ve Compose bileşenleri içinde görünümleri (AndroidView
bileşeni aracılığıyla) bulabilirsiniz.
Her iki türün eşleştirilmesi için özel adımlar gerekmez. Görüntüleme sayısını Espresso'nun onView
ile, Oluşturma öğelerini ise ComposeTestRule
ile eşleştirirsiniz.
@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, UiAutomator'dan composable'lara yalnızca uygun tanımlayıcılar (gösterilen metin, içerik açıklaması vb.) aracılığıyla erişilebilir. Modifier.testTag
kullanan herhangi bir birleştirilebilir öğeye erişmek istiyorsanız söz konusu birleştirilebilir öğenin alt ağacı için testTagsAsResourceId
semantik mülkünü etkinleştirmeniz gerekir. Bu davranışı etkinleştirmek, kaydırılabilir bileşenler (örneğin, LazyColumn
) gibi başka benzersiz bir herkese açık kullanıcı adı olmayan bileşenler için kullanışlıdır.
Modifier.testTag
içeren tüm iç içe yerleştirilmiş derlenebilir öğelere UiAutomator'dan erişilebilmesi için semantik mülkü yalnızca derlenebilir öğeler hiyerarşinizde üst kısımda bir kez 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 derlenebilen tüm öğelere, resourceName
ile aynı tag
kullanılarak By.res(resourceName)
ile 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 test açılış sayfası, testin temelleri ve teknikleri hakkında daha geniş bir bakış açısı sunar.
- Testin temelleri: Android uygulamasını test etmenin temel kavramları hakkında daha fazla bilgi edinin.
- Yerel testler: Bazı testleri kendi iş istasyonunuzda yerel olarak çalıştırabilirsiniz.
- Araçla testler: Araçla testler de çalıştırmak iyi bir uygulamadır. Yani doğrudan cihazda çalıştırı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 kullanabileceği çok sayıda cihaz olduğundan farklı ekran boyutlarını test etmeniz gerekir.
- Espresso: Görüntü tabanlı kullanıcı arayüzleri için tasarlanmış olsa da Espresso bilgisi, Oluşturma testi ile ilgili bazı yönler için yine de faydalı olabilir.