اختبار الوحدات من خلال ميزة "نظرة سريعة"

تتيح لك واجهة برمجة التطبيقات لاختبار وحدات Glance اختبار رمز Glance بدون تضخيم المشاهدات أو الحاجة إلى أداة التشغيل الآلي لواجهة المستخدم. على سبيل المثال، تتيح لك unit test API التحقّق من الشروط، مثل ما إذا كانت العناصر مدرَجة في قائمة أو تم وضع علامة في المربّعات، وذلك باستخدام عوامل المطابقة مثل 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(). وبخلاف ذلك، تكون هذه الخطوة اختيارية.

يمكنك استخدام أي إطار عمل لاختبار وحدات Android يستند إلى آلة Java الافتراضية (JVM)، مثل Roboletric، لتوفير السياق.

إذا كانت الدالة القابلة للتجميع تحصل على LocalSize، اضبط الحجم المقصود للاختبار قبل تقديم عنصر قابل للتجميع في الاختبار. الحجم التلقائي هو 349.dp x ‏455.dp، وهو ما يعادل تطبيق مصغّر أبعاده 5×4 يظهر على جهاز Pixel 4 في الوضع العمودي.

  • إذا كان تطبيقك المصغر يستخدم sizeMode == Single، يمكنك ضبطه على minWidth وminHeight في ملف info.xml الخاص بالتطبيق المصغّر.
  • إذا كان تطبيقك المصغر يستخدم sizeMode == Exact، يمكنك تحديد الأحجام التي تريد اختبارها بطريقة مشابهة لطريقة تحديد حجم التطبيق المصغر وتحديد أحجام الشاشة الأفقية والشاشة العمودية التي قد يظهر عليها التطبيق المصغر واختباره على هذه الأحجام.
  • إذا كان تطبيقك المصغّر يستخدم sizeMode == Responsive، يمكنك ضبط هذا الخيار على أحد الأحجام من القائمة التي تقدّمها عند تحديد sizeMode.

تبلغ المدة التلقائية لمهلة الاختبار ثانية واحدة، ولكن يمكنك ضبط مدة مخصَّصة كوسيطة على طريقة runGlanceAppWidgetUnitTest إذا كانت البنية الأساسية الاختبارية تفرض مهلة مختلفة.

لمزيد من المعلومات وعينات الرموز البرمجية، اطّلِع على المستندات المرجعية لمحاولة runGlanceAppWidgetUnitTest.