آزمون واحد با Glance

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

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

راه‌اندازی

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

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

ساختار آزمایشی

توابع ترکیبی را خارج از کلاس GlanceAppWidget سازمان‌دهی کنید تا امکان استفاده مجدد از کد و آزمایش واحد فراهم شود. تا حد امکان پیچیدگی واحدهای تحت آزمایش را کاهش دهید.

می‌توانید «عنصر ترکیبی» آزمایشی را با provideComposable هدف‌یابی کنید و آزمایش‌های واحدتان را به‌ترتیب با onNode یا onAllNodes روی یک یا چند گره «نگاه سریع» اجرا کنید.

private const val FAKE_HEADLINE = "EXTRA! EXTRA! READ ALL ABOUT IT!"

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasHeadline() = runGlanceAppWidgetUnitTest {
        // Set the composable to test
        provideComposable {
            MyNewsItemComposable(FAKE_HEADLINE)
        }

        // Perform assertions
        onNode(hasTestTag("headline"))
            .assertHasText(FAKE_HEADLINE)
    }


    @Composable
    fun MyNewsItemComposable(headline: String) {
        Row {
            Text(
                text = headline,
                modifier = GlanceModifier.semantics { testTag = "headline" },
            )
        }
    }
}

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

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

می‌توانید از هر چارچوب آزمایش واحد Android مبتنی بر JVM، مثل Robolectric، برای ارائه بافت استفاده کنید.

اگر تابع ترکیب‌پذیر شما به LocalSize دسترسی دارد، قبل‌از ارائه ترکیب‌پذیر در آزمایش، اندازه موردنظر را برای آزمایش تنظیم کنید. اندازه پیش‌فرض ۳۴۹.dp x ۴۵۵.dp است که معادل یک ابزارک ۵x۴ است که در دستگاه Pixel 4 در حالت عمودی نشان داده می‌شود.

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

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

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