اختبار تنسيق Compose

اختبِر واجهة مستخدم تطبيقك للتأكّد من أنّ سلوك رمز Compose صحيح. يتيح لك ذلك رصد الأخطاء مبكرًا وتحسين جودة تطبيقك.

توفّر Compose مجموعة من واجهات برمجة التطبيقات للاختبار من أجل العثور على العناصر والتحقّق من سماتها وتنفيذ إجراءات المستخدم. وتتضمّن واجهات برمجة التطبيقات أيضًا ميزات متقدّمة، مثل التلاعب بالوقت. استخدِم واجهات برمجة التطبيقات هذه لإنشاء اختبارات قوية تتحقّق من سلوك تطبيقك.

المشاهدات

إذا كنت تعمل باستخدام طرق العرض بدلاً من Compose، اطّلِع على القسم العام اختبار التطبيقات على Android.

على وجه الخصوص، يُعدّ دليل أتمتة اختبارات واجهة المستخدم مكانًا جيدًا للبدء. توضّح هذه الصفحة كيفية إعداد اختبارات تلقائية يتم تنفيذها على الجهاز، بما في ذلك عند استخدام طرق العرض.

المفاهيم الرئيسية

في ما يلي بعض المفاهيم الأساسية لاختبار رمز Compose البرمجي:

  • الدلالات: تمنح الدلالات معنى لواجهة المستخدم، ما يسمح للاختبارات بالتفاعل مع عناصر معيّنة.
  • واجهات برمجة التطبيقات الخاصة بالاختبار: تتيح لك واجهات برمجة التطبيقات الخاصة بالاختبار العثور على العناصر والتحقّق من سماتها وتنفيذ إجراءات المستخدم.
  • المزامنة: تتحقّق المزامنة من أنّ الاختبارات تنتظر أن يصبح عنصر واجهة المستخدم غير نشط قبل تنفيذ الإجراءات أو تقديم التأكيدات.
  • إمكانية التشغيل التفاعلي: تتيح إمكانية التشغيل التفاعلي إجراء الاختبارات على عناصر مستندة إلى كل من Compose وView في التطبيق نفسه.

ورقة الغش الخاصة بالاختبار

اطّلِع على ورقة الغش الخاصة بالاختبار للحصول على نظرة عامة على جميع المواضيع الرئيسية التي يجب التعرّف عليها بشأن الاختبار في Compose.

ضبط إعدادات الميزة

إعداد تطبيقك للسماح لك باختبار رمز الإنشاء

أولاً، أضِف التبعيات التالية إلى ملف build.gradle الخاص بالوحدة التي تحتوي على اختبارات واجهة المستخدم:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

تتضمّن هذه الوحدة ComposeTestRule وتنفيذًا لنظام التشغيل Android يُسمى AndroidComposeTestRule. من خلال هذه القاعدة، يمكنك ضبط محتوى "الكتابة" أو الوصول إلى النشاط. يمكنك إنشاء القواعد باستخدام دوال المصنع، إما createComposeRule أو createAndroidComposeRule إذا كنت بحاجة إلى الوصول إلى نشاط. يبدو اختبار واجهة المستخدم النموذجي في Compose على النحو التالي:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

مراجع إضافية

  • اختبار التطبيقات على Android: تقدّم صفحة Android الرئيسية للاختبار نظرة عامة على أساسيات الاختبار وأساليبه.
  • أساسيات الاختبار: مزيد من المعلومات عن المفاهيم الأساسية لاختبار تطبيق Android
  • الاختبارات المحلية: يمكنك إجراء بعض الاختبارات محليًا على محطة العمل الخاصة بك.
  • الاختبارات المبرمَجة: من الممارسات الجيدة أيضًا إجراء اختبارات مبرمَجة. أي الاختبارات التي يتم إجراؤها مباشرةً على الجهاز.
  • التكامل المستمر: يتيح لك التكامل المستمر دمج اختباراتك في مسار النشر.
  • اختبار أحجام الشاشات المختلفة: بما أنّ المستخدمين يتوفّر لديهم العديد من الأجهزة، عليك اختبار أحجام الشاشات المختلفة.
  • Espresso: على الرغم من أنّ Espresso مخصّصة لواجهات المستخدم المستندة إلى العرض، يمكن أن تكون معرفة Espresso مفيدة في بعض جوانب اختبار Compose.

Codelab

لمزيد من المعلومات، جرِّب التدريب العملي حول اختبار Jetpack Compose.

نماذج