Glance यूनिट टेस्ट एपीआई की मदद से, व्यू बढ़ाए बिना या यूज़र इंटरफ़ेस (यूआई) ऑटोमेट करने वाले टूल की ज़रूरत के बिना, Glance कोड की जांच की जा सकती है. उदाहरण के लिए, यूनिट टेस्ट एपीआई की मदद से, hasContentDescriptionEqualTo
या isChecked
जैसे मैचर का इस्तेमाल करके, शर्तों की पुष्टि की जा सकती है. जैसे, एलिमेंट किसी सूची में हैं या नहीं या बॉक्स पर सही का निशान लगा है या नहीं.
यह एपीआई छोटा और कम सेटअप वाला है. इसलिए, अपने विजेट के अलग-अलग हिस्सों को डेवलप करते समय, टेस्ट ड्रिवन डेवलपमेंट किया जा सकता है. साथ ही, कोड को फिर से इस्तेमाल करने की सुविधा को बेहतर बनाने के लिए, उन्हें व्यवस्थित किया जा सकता है.
सेटअप
यूनिट टेस्ट लाइब्रेरी का इस्तेमाल करने के लिए ज़रूरी डिपेंडेंसी, यहां दिए गए उदाहरणों में दिखाई गई हैं:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
टेस्ट का स्ट्रक्चर
कोड का फिर से इस्तेमाल करने और यूनिट टेस्टिंग की सुविधा चालू करने के लिए, GlanceAppWidget
क्लास के बाहर कॉम्पोज़ेबल फ़ंक्शन व्यवस्थित करें. जांच के दायरे में आने वाली इकाइयों को जितना हो सके उतना आसान बनाएं.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
टेस्ट के लिए कॉन्टेक्स्ट और साइज़ सेट करना
अगर आपका कॉम्पोज़ेबल फ़ंक्शन, LocalContext.current()
तरीके का इस्तेमाल करके कॉन्टेक्स्ट पढ़ता है, तो आपको LocalContext.current()
तरीके का इस्तेमाल करके कॉन्टेक्स्ट सेट करना होगा.
हालांकि, यह करना ज़रूरी नहीं है.
संदर्भ देने के लिए, Roboletric जैसे किसी भी जेवीएम-आधारित Android यूनिट टेस्टिंग फ़्रेमवर्क का इस्तेमाल किया जा सकता है.
अगर आपका कॉम्पोज़ेबल फ़ंक्शन LocalSize
को ऐक्सेस करता है, तो टेस्ट में कॉम्पोज़ेबल देने से पहले, टेस्ट के लिए सही साइज़ सेट करें. डिफ़ॉल्ट साइज़ 349.dp x 455.dp होता है. यह Pixel 4 डिवाइस पर, पोर्ट्रेट मोड में दिखाए गए 5x4 विजेट के बराबर होता है.
- अगर आपका ऐप्लिकेशन विजेट
sizeMode == Single
का इस्तेमाल करता है, तो इसे विजेट कीinfo.xml
फ़ाइल मेंminWidth
औरminHeight
पर सेट किया जा सकता है. - अगर आपका ऐप्लिकेशन विजेट
sizeMode == Exact
का इस्तेमाल करता है, तो जांच के लिए साइज़ की पहचान उसी तरह की जा सकती है जिस तरह अपने विजेट के लिए साइज़ तय किया जाता है. साथ ही, लैंडस्केप और पोर्ट्रेट साइज़ की पहचान की जा सकती है, ताकि आपके विजेट उन पर दिखें और उनकी जांच की जा सके. - अगर आपका ऐप्लिकेशन विजेट
sizeMode == Responsive
का इस्तेमाल करता है, तो इसेsizeMode
की जानकारी देते समय दी गई सूची में से किसी एक साइज़ पर सेट किया जा सकता है.
टेस्ट के टाइम आउट की डिफ़ॉल्ट अवधि एक सेकंड होती है. हालांकि, अगर आपके टेस्ट इन्फ़्रास्ट्रक्चर में कोई दूसरा टाइम आउट लागू होता है, तो runGlanceAppWidgetUnitTest
तरीके के लिए आर्ग्युमेंट के तौर पर अपनी पसंद के मुताबिक अवधि दी जा सकती है.
ज़्यादा जानकारी और कोड सैंपल के लिए, runGlanceAppWidgetUnitTest
के लिए रेफ़रंस दस्तावेज़ देखें.