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
مراجعه کنید.