Birlikte çalışabilirlik

Compose, yaygın test çerçeveleriyle entegre olur.

Espresso ile birlikte çalışabilirlik

Karma uygulamalarda, Oluşturma bileşenlerini görünüm hiyerarşilerinde ve görünümler oluşturabilirsiniz (AndroidView composable aracılığıyla).

Bu iki türle eşleştirmek için herhangi bir özel adım 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 bileşene erişmek istiyorsanız söz konusu bileş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 özelliği 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) öğesini içeren tüm composable'lara (By.res(resourceName)) resourceName ile aynı tag boyutunu kullanarak.

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ı, testin temellerini ve tekniklerini daha kapsamlı bir şekilde gösterir.
  • Testle ilgili temel bilgiler: Daha fazla bilgi bir Android uygulamasını test etmenin arkasındaki temel kavramlar hakkında.
  • Yerel testler: Bazı testler yapabilirsiniz yerel olarak ve kendi iş istasyonunuzda.
  • Araçla testler: Araçla testler de çalıştırmak iyi bir uygulamadır. Yani doğrudan yürütülen testler cihaz üzerinde.
  • 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ülemeye dayalı olarak tasarlanmıştır. Kullanıcı arayüzleri, Espresso bilgisi Compose'un bazı yönleri için yine de yararlı olabilir teşvik etmek anlamına gelir.