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ülemeleri şununla eşleştiriyorsunuz: Espresso'daki onView ve ComposeTestRule ile öğeler oluştur.

@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 uygun tanımlayıcılar (görüntülenen metin, içerik açıklaması vb.). Şunu istiyorsanız: Modifier.testTag kullanan herhangi bir composable'a erişmek için belirli bir composable'ın testTagsAsResourceId anlamsal özelliği alt ağaçtır. Bu davranışın etkinleştirilmesi, Kaydırılabilir composable'lar gibi diğer benzersiz herkese açık kullanıcı adları (örneğin, LazyColumn).

composable'lar hiyerarşinizde yüksek bir değere sahip olmaları için anlamsal özelliği Modifier.testTag içeren tüm iç içe yerleştirilmiş composable'ların şuradan erişilebilir olduğundan emin olun: UiAutomator.

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 resourceName ile aynı tag boyutunu kullanarak By.res(resourceName) arasında.

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, kendi iş istasyonunuzda.
  • Araçlı testler: İyidir araçlı testleri de yapma alıştırması yapacaksınız. Yani doğrudan yürütülen testler cihaz üzerinde.
  • Sürekli entegrasyon: Sürekli entegrasyon, testlerinizi dağıtımınıza entegre etmenizi sağlar ardışık düzendir.
  • Farklı ekran boyutlarını test edin: birçok cihaz varsa bunları farklı ekranlarla test etmeniz gerekir seçin.
  • 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.