Compose, सामान्य टेस्टिंग फ़्रेमवर्क के साथ इंटिग्रेट हो जाता है.
Espresso के साथ इंटरऑपरेबिलिटी
किसी हाइब्रिड ऐप्लिकेशन में, आपको व्यू की हैरारकी में Compose कॉम्पोनेंट और Compose कॉम्पोनेंट में व्यू दिख सकते हैं. इसके लिए, 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)
की मदद से कोई भी कंपोज़ेबल, इस सुविधा का इस्तेमाल करके ऐक्सेस किया जा सकता है
By.res(resourceName)
का tag
का resourceName
वाला उपयोग.
val device = UiDevice.getInstance(getInstrumentation())
val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.
अतिरिक्त संसाधन
- Android पर ऐप्लिकेशन टेस्ट करना: Android टेस्टिंग के मुख्य लैंडिंग पेज पर, टेस्टिंग की बुनियादी बातों और तकनीकों के बारे में ज़्यादा जानकारी मिलती है.
- जांच की बुनियादी बातें: ज़्यादा जानें Android ऐप्लिकेशन की टेस्टिंग के मुख्य सिद्धांतों के बारे में ज़्यादा जानें.
- लोकल टेस्ट: कुछ टेस्ट किए जा सकते हैं अपने वर्कस्टेशन पर कर सकते हैं.
- इंस्ट्रूमेंट किए गए टेस्ट: इंस्ट्रूमेंट किए गए टेस्ट भी चलाना एक अच्छा तरीका है. इसका मतलब है कि ऐसी टेस्टिंग जो सीधे तौर पर की जाती हैं डिवाइस पर.
- कंटिन्यूअस इंटिग्रेशन: कंटिन्यूअस इंटिग्रेशन की मदद से, अपने टेस्ट को डिप्लॉयमेंट की लाइन में इंटिग्रेट किया जा सकता है.
- अलग-अलग स्क्रीन साइज़ की जांच करना: उपयोगकर्ताओं के पास कई डिवाइस उपलब्ध हैं. इसलिए, आपको अलग-अलग स्क्रीन साइज़ की जांच करनी चाहिए.
- Espresso: हालांकि, व्यू-आधारित मॉडल के लिए है यूज़र इंटरफ़ेस (यूआई) और एस्प्रेसो जानकारी, Compose के कुछ पहलुओं के लिए अब भी मददगार हो सकती है टेस्टिंग हो रही है.