इंटरोऑपरेबिलिटी

Compose, सामान्य टेस्टिंग फ़्रेमवर्क के साथ इंटिग्रेट हो जाता है.

Espresso के साथ इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना)

किसी हाइब्रिड ऐप्लिकेशन में, आपको व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) में, कंपोज़ कॉम्पोनेंट और व्यू, कंपोज़ेबल में मिले व्यू (AndroidView कंपोज़ेबल के ज़रिए).

दोनों में से किसी भी टाइप को मैच करने के लिए, किसी खास चरण की ज़रूरत नहीं है. आप इसके साथ दृश्यों का मिलान करते हैं एस्प्रेसो onView और ComposeTestRule के साथ एलिमेंट लिखें.

@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 के साथ इंटरऑपरेबिलिटी

डिफ़ॉल्ट रूप से, कंपोज़ेबल को UiAutomator से सिर्फ़ उनके आसानी से इस्तेमाल किए जा सकने वाले डिस्क्रिप्टर (डिसप्ले टेक्स्ट, कॉन्टेंट की जानकारी वगैरह). अगर आपको Modifier.testTag का इस्तेमाल करने वाले किसी भी कंपोज़ेबल को ऐक्सेस करने के लिए, आपको कंपोज़ेबल के लिए सिमैंटिक प्रॉपर्टी testTagsAsResourceId सबट्री है. इस व्यवहार को चालू करने से उन कंपोज़ेबल के लिए मदद मिलती है जिनमें कोई अन्य यूनीक हैंडल, जैसे कि स्क्रोल किए जा सकने वाले कंपोज़ेबल (उदाहरण के लिए, LazyColumn).

अपने कंपोज़ेबल हैरारकी में, सिर्फ़ एक बार सिमैंटिक प्रॉपर्टी को चालू करें पक्का करें कि Modifier.testTag के साथ नेस्ट किए गए सभी कंपोज़ेबल को ऐक्सेस किया जा सके 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) की मदद से कोई भी कंपोज़ेबल, इस सुविधा का इस्तेमाल करके ऐक्सेस किया जा सकता है resourceName के साथ काम करने वाले tag का इस्तेमाल करके, By.res(resourceName) में से.

val device = UiDevice.getInstance(getInstrumentation())

val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.

अतिरिक्त संसाधन

  • Android पर ऐप्लिकेशन की जांच करना: Android की मुख्य जांच लैंडिंग पेज पर, टेस्टिंग से जुड़ी बुनियादी बातों और तकनीकों के बारे में ज़्यादा जानकारी मिलती है.
  • जांच की बुनियादी बातें: ज़्यादा जानें Android ऐप्लिकेशन की टेस्टिंग के मुख्य सिद्धांतों के बारे में ज़्यादा जानें.
  • लोकल टेस्ट: कुछ टेस्ट किए जा सकते हैं अपने वर्कस्टेशन पर कर सकते हैं.
  • इंस्ट्रुमेंट्ड टेस्ट: यह अच्छा है इंस्ट्रुमेंटेड टेस्ट करने का अभ्यास भी किया. इसका मतलब है कि ऐसी टेस्टिंग जो सीधे तौर पर की जाती हैं डिवाइस पर.
  • लगातार इंटिग्रेशन: लगातार इंटिग्रेशन की मदद से, टेस्ट को डिप्लॉयमेंट में इंटिग्रेट किया जा सकता है पाइपलाइन.
  • अलग-अलग साइज़ की स्क्रीन आज़माएं: लोगों के लिए कई डिवाइस उपलब्ध हैं, तो आपको अलग-अलग स्क्रीन के लिए साइज़.
  • Espresso: हालांकि, व्यू-आधारित मॉडल के लिए है यूज़र इंटरफ़ेस (यूआई) और एस्प्रेसो जानकारी, Compose के कुछ पहलुओं के लिए अब भी मददगार हो सकती है टेस्टिंग हो रही है.