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

تتيح لك واجهة برمجة التطبيقات الاختبارية لوحدة 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 مستند إلى JVM، مثل Roboletric.

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

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

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

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