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

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

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

हाइब्रिड ऐप्लिकेशन में, आपको व्यू की हैरारकी में Compose कॉम्पोनेंट और Compose कॉम्पोनेंट में व्यू दिख सकते हैं. इसके लिए, AndroidView कॉम्पोनेंट का इस्तेमाल करें.

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

val device = UiDevice.getInstance(getInstrumentation())

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

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

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