Compose, आम तौर पर इस्तेमाल होने वाले टेस्टिंग फ़्रेमवर्क के साथ काम करता है.
Espresso के साथ इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना)
हाइब्रिड ऐप्लिकेशन में, आपको व्यू की हैरारकी में 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: यह टूल, व्यू-आधारित यूज़र इंटरफ़ेस (यूआई) के लिए है. हालांकि, Espresso के बारे में जानकारी, Compose की जांच के कुछ पहलुओं के लिए अब भी मददगार हो सकती है.