एक नज़र में जानकारी देखने की सुविधा की मदद से यूनिट टेस्टिंग

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 जैसे किसी भी JVM-आधारित Android यूनिट टेस्टिंग फ़्रेमवर्क का इस्तेमाल किया जा सकता है.

अगर आपका कॉम्पोज़ेबल फ़ंक्शन LocalSize को ऐक्सेस करता है, तो टेस्ट में कॉम्पोज़ेबल देने से पहले, टेस्ट के लिए सही साइज़ सेट करें. डिफ़ॉल्ट साइज़ 349.dp x 455.dp होता है. यह Pixel 4 डिवाइस पर, पोर्ट्रेट मोड में दिखाए गए 5x4 विजेट के बराबर होता है.

  • अगर आपका AppWidget sizeMode == Single का इस्तेमाल करता है, तो आपके पास इसे विजेट की info.xml फ़ाइल में, minWidth और minHeight पर सेट करने का विकल्प है.
  • अगर आपका ऐप्लिकेशन विजेट sizeMode == Exact का इस्तेमाल करता है, तो जांच के लिए साइज़ की पहचान उसी तरह की जा सकती है जिस तरह अपने विजेट का साइज़ तय किया जाता है. साथ ही, लैंडस्केप और पोर्ट्रेट साइज़ की पहचान की जा सकती है, ताकि आपके विजेट उन पर दिखें और उनकी जांच की जा सके.
  • अगर आपका ऐप्लिकेशन विजेट sizeMode == Responsive का इस्तेमाल करता है, तो इसे sizeMode की जानकारी देते समय दी गई सूची में से किसी एक साइज़ पर सेट किया जा सकता है.

टेस्ट के टाइम आउट की डिफ़ॉल्ट अवधि एक सेकंड होती है. हालांकि, अगर आपके टेस्ट इन्फ़्रास्ट्रक्चर में कोई दूसरा टाइम आउट लागू होता है, तो runGlanceAppWidgetUnitTest तरीके के लिए आर्ग्युमेंट के तौर पर अपनी पसंद के मुताबिक अवधि दी जा सकती है.

ज़्यादा जानकारी और कोड सैंपल के लिए, runGlanceAppWidgetUnitTest का रेफ़रंस दस्तावेज़ देखें.