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

एक नज़र में जानकारी देने वाली यूनिट के टेस्ट एपीआई की मदद से, व्यू को अपडेट किए बिना, एक नज़र में जानकारी देने वाले कोड की जांच की जा सकती है या यूआई ऑटोमेशन की ज़रूरत है. उदाहरण के लिए, यूनिट टेस्ट एपीआई की मदद से, शर्तें, जैसे एलिमेंट सूची में हैं या बॉक्स 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.
  • अगर आपका AppWidget sizeMode == Exact का इस्तेमाल करता है, तो उसी तरह से टेस्ट करें जैसे आप अपने विजेट के लिए साइज़ तय करते हैं और उन लैंडस्केप और पोर्ट्रेट साइज़ की पहचान करें जिन पर आपका विजेट दिख सकता है और उनकी जांच करें उनके लिए.
  • अगर आपका AppWidget sizeMode == Responsive का इस्तेमाल करता है, तो आप इसे इनमें से किसी एक पर सेट कर सकते हैं सूची से साइज़. जो आपने sizeMode तय करते समय दिया है.

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

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