تست واحد با Glance

API تست واحد Glance به شما این امکان را می دهد که کد Glance خود را بدون افزایش نماها یا نیاز به خودکار UI آزمایش کنید. برای مثال، واحد تست API به شما امکان می‌دهد با استفاده از تطبیق‌هایی مانند hasContentDescriptionEqualTo یا isChecked شرایط را تأیید کنید، مانند اینکه آیا عناصر در یک لیست هستند یا کادرها علامت زده شده‌اند.

این API سبک است و به تنظیمات کمتری نیاز دارد، بنابراین می‌توانید همزمان با توسعه تکه‌های ویجت خود و سازماندهی آنها برای بهبود استفاده مجدد از کد، توسعه آزمایشی را انجام دهید.

راه اندازی

وابستگی های مورد نیاز برای استفاده از کتابخانه آزمون واحد در مثال های زیر نشان داده شده است:

// 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)
    }
}

زمینه و اندازه را برای آزمون تنظیم کنید

اگر تابع composable شما متن را با استفاده از متد LocalContext.current() می خواند، باید با استفاده از متد LocalContext.current() یک متن تنظیم کنید. در غیر این صورت این مرحله اختیاری است.

شما می توانید از هر چارچوب تست واحد اندروید مبتنی بر JVM، مانند Roboletric، برای ارائه زمینه استفاده کنید.

اگر تابع composable شما به LocalSize دسترسی دارد، قبل از ارائه یک composable در آزمایش، اندازه مورد نظر را برای آزمایش تنظیم کنید. اندازه پیش‌فرض 349.dp x 455.dp است که معادل یک ویجت 5x4 است که در دستگاه Pixel 4 در حالت عمودی نشان داده می‌شود.

  • اگر AppWidget شما از sizeMode == Single استفاده می‌کند، می‌توانید آن را روی minWidth و minHeight در فایل info.xml ویجت خود تنظیم کنید.
  • اگر AppWidget شما از sizeMode == Exact استفاده می‌کند، می‌توانید اندازه‌ها را برای آزمایش به روشی مشابه با نحوه تعیین اندازه برای ویجت خود شناسایی کنید و اندازه‌های افقی و عمودی را که ویجت شما ممکن است روی آن ظاهر شود شناسایی کنید و آنها را آزمایش کنید.
  • اگر AppWidget شما از sizeMode == Responsive استفاده می کند، می توانید آن را روی یکی از اندازه های لیستی که هنگام تعیین sizeMode ارائه می کنید، تنظیم کنید.

مدت زمان پیش‌فرض برای وقفه آزمایشی 1 ثانیه است، اما اگر زیرساخت آزمایش شما زمان‌بندی متفاوتی را اعمال کند، می‌توانید مدت زمان سفارشی را به عنوان آرگومان به روش runGlanceAppWidgetUnitTest ارسال کنید.

برای اطلاعات بیشتر و نمونه کد، به مستندات مرجع runGlanceAppWidgetUnitTest مراجعه کنید.