إمكانية التشغيل التفاعلي

يتكامل Compose مع أطر عمل الاختبار الشائعة.

التوافقية مع قهوة الإسبريسو

في التطبيق المختلط، يمكنك العثور على مكوّنات Compose ضِمن طرق العرض الهرمية وطرق العرض داخل عناصر Compose القابلة للإنشاء (عبر العنصر AndroidView القابل للإنشاء).

لا توجد خطوات خاصة مطلوبة لمطابقة أي من النوعين. يمكنك مطابقة طرق العرض مع عناصر onView في Espresso وCompose مع ComposeTestRule.

@Test
fun androidViewInteropTest() {
    // Check the initial state of a TextView that depends on a Compose state.
    Espresso.onView(withText("Hello Views")).check(matches(isDisplayed()))
    // Click on the Compose button that changes the state.
    composeTestRule.onNodeWithText("Click here").performClick()
    // Check the new value.
    Espresso.onView(withText("Hello Compose")).check(matches(isDisplayed()))
}

إمكانية التشغيل التفاعلي من خلال UiAutomator

وفقًا للإعدادات التلقائية، لا يمكن الوصول إلى العناصر القابلة للإنشاء من UiAutomator إلا من خلال الأوصاف المناسبة لها (النص المعروض ووصف المحتوى وغير ذلك). إذا كنت تريد الوصول إلى أي عنصر قابل للإنشاء يستخدم Modifier.testTag، عليك تفعيل السمة الدلالية testTagsAsResourceId للغرض الفرعي لعنصر العنصر المحدّد. يُعدّ تفعيل هذا السلوك مفيدًا للعناصر القابلة للإنشاء التي ليس لها أي اسم معرِّف فريد آخر، مثل العناصر القابلة للإنشاء القابلة للتمرير (مثل LazyColumn).

فعِّل السمة الدلالية مرة واحدة فقط في التسلسل الهرمي للعناصر القابلة للإنشاء لضمان الوصول إلى جميع العناصر القابلة للإنشاء المدمجة مع Modifier.testTag من UiAutomator.

Scaffold(
    // Enables for all composables in the hierarchy.
    modifier = Modifier.semantics {
        testTagsAsResourceId = true
    }
){
    // Modifier.testTag is accessible from UiAutomator for composables nested here.
    LazyColumn(
        modifier = Modifier.testTag("myLazyColumn")
    ){
        // Content
    }
}

يمكن الوصول إلى أي عنصر قابل للإنشاء مع Modifier.testTag(tag) باستخدام By.res(resourceName) باستخدام tag نفسه مثل resourceName.

val device = UiDevice.getInstance(getInstrumentation())

val lazyColumn: UiObject2 = device.findObject(By.res("myLazyColumn"))
// Some interaction with the lazyColumn.

مراجع إضافية

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