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

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

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

المشاهدات

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

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

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

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

  • الدلالات: تتفاعل اختبارات الإنشاء مع واجهة المستخدم باستخدام الدلالات، التي تمنح معنى لقطع واجهة المستخدم ويتم إنشاؤها إلى جانب التسلسل الهرمي لواجهة المستخدم.
  • اختبار واجهات برمجة التطبيقات: توفّر أداة Compose واجهات برمجة تطبيقات لاختبار العثور على العناصر، وتأكيد حالتها وخصائصها، وتنفيذ الإجراءات بهدف محاكاة تفاعلات المستخدمين.
  • المزامنة: تتم تلقائيًا مزامنة اختبارات 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. من خلال هذه القاعدة، يمكنك ضبط Compose content أو الوصول إلى النشاط. يمكنك إنشاء القواعد باستخدام وظائف المصنع، إما createComposeRule أو، إذا كنت بحاجة إلى الوصول إلى نشاط، createAndroidComposeRule. يبدو اختبار واجهة المستخدم المعتاد لميزة "إنشاء" على النحو التالي:

// 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 مخصّص لواجهات مستنِدة إلى الاطّلاع، يمكن أن تكون المعرفة به مفيدة لبعض جوانب اختبار ميزة "الإنشاء".

الدرس التطبيقي حول الترميز

لمزيد من المعلومات، يمكنك تجربة الدليل التعليمي لاختبار Jetpack Compose.

نماذج