تتيح لك واجهة برمجة التطبيقات لاختبار الوحدات في Glance اختبار رمز Glance بدون تضخيم طرق العرض أو الحاجة إلى أداة UI Automator. على سبيل المثال، تتيح لك واجهة برمجة التطبيقات لاختبار الوحدات التحقّق من الشروط، مثل ما إذا كانت العناصر في قائمة أو ما إذا تم وضع علامة في المربّعات، وذلك باستخدام أدوات المطابقة مثل hasContentDescriptionEqualTo
أو isChecked
.
تتميّز واجهة برمجة التطبيقات هذه بأنّها بسيطة ولا تتطلّب الكثير من الإعدادات، ما يتيح لك إجراء عملية تطوير مستندة إلى الاختبار أثناء تطوير أجزاء فردية من التطبيق المصغّر وتنظيمها لتحسين إعادة استخدام الرموز.
ضبط إعدادات الميزة
يتم عرض العناصر التابعة المطلوبة لاستخدام مكتبة اختبارات الوحدات في الأمثلة التالية:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
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()
، يجب ضبط السياق باستخدام setContext()
. وإلّا، تكون هذه الخطوة اختيارية.
يمكنك استخدام أي إطار عمل لاختبار الوحدات على Android يستند إلى آلة جافا الافتراضية (JVM)، مثل Roboletric، لتوفير السياق.
إذا كانت الدالة البرمجية القابلة للإنشاء تصل إلى LocalSize
، اضبط الحجم المطلوب للاختبار قبل توفير دالة برمجية قابلة للإنشاء في الاختبار. الحجم التلقائي هو 349 وحدة بكسل غير مرتبطة بالكثافة × 455 وحدة بكسل غير مرتبطة بالكثافة، وهو ما يعادل أداة 5×4 معروضة على جهاز Pixel 4 في الوضع العمودي.
- إذا كان AppWidget يستخدم
sizeMode == Single
، يمكنك ضبط ذلك علىminWidth
وminHeight
في ملفinfo.xml
الخاص بالأداة. - إذا كان AppWidget يستخدم
sizeMode == Exact
، يمكنك تحديد الأحجام التي تريد اختبارها بطريقة مشابهة لتحديد حجم الأداة وتحديد أحجام الوضع الأفقي والعمودي التي قد تظهر عليها الأداة واختبارها. - إذا كان AppWidget يستخدِم
sizeMode == Responsive
، يمكنك ضبط هذا الخيار على أحد الأحجام من القائمة التي تقدّمها عند تحديدsizeMode
.
المدة التلقائية لانتهاء مهلة الاختبار هي ثانية واحدة، ولكن يمكنك تمرير مدة مخصّصة كمعلَمة إلى طريقة runGlanceAppWidgetUnitTest
إذا كانت البنية الأساسية للاختبار تفرض مهلة مختلفة.
لمزيد من المعلومات وعيّنات التعليمات البرمجية، راجِع المستندات المرجعية الخاصة بـ
runGlanceAppWidgetUnitTest
.