إسبريسو متعدد العمليات

مع نمو تطبيقك، قد تجد أنه من المفيد وضع بعض مكونات تطبيقك في عملية أخرى غير العملية الرئيسية لتطبيقك. لاختبار مكونات التطبيق في غير التلقائية، يمكنك استخدام وظيفة Multiprocess Espresso. تتيح لك هذه الأداة المتوفرة على نظام التشغيل Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) والإصدارات الأحدث ما يلي: اختبار التفاعلات مع واجهة المستخدم في تطبيقك بكل سلاسة مع الحفاظ على ضمانات مزامنة Espresso.

عند استخدام قهوة إسبرسو متعددة العمليات، احتفظ بالإصدارات والنطاق التاليَين: اعتبارات مهمة:

  • يجب أن يستهدف تطبيقك الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.
  • يمكن للأداة اختبار مكونات التطبيق التي تدرجها فقط في العمليات داخل حزمة التطبيق. لا يمكنه اختبار العمليات الخارجية.

استخدام الأداة

يجب إضافة مرجع لاختبار عملية داخل تطبيقك باستخدام Multiprocess Espresso إلى عنصر espresso-remote في ملف build.gradle لتطبيقك:

app/build.gradle

Groovy

dependencies {
    ...
    androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1'
}

Kotlin

dependencies {
    ...
    androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1')
}

يجب أيضًا إضافة ما يلي إلى بيان androidTest لتطبيقك:

  • تمثّل هذه السمة عنصر <instrumentation> يحدّد العملية.
  • عنصر <meta-data> يشير إلى أنّك تريد استخدام قهوة إسبريسو متعددة العمليات

يعرض مقتطف الرمز التالي كيفية إضافة هذه العناصر:

src/androidTest/AndroidManifest.xml

<manifest ... package="androidx.test.mytestapp.tests">
  <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" />
  <instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="androidx.test.mytestapp"
    android:targetProcesses="*">
    <meta-data
      android:name="remoteMethod"
      android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" />
  </instrumentation>
</manifest>

يشير المقتطف السابق لإطار عمل Android الذي تريد أن يختبره كل عملية في حزمة التطبيق. إذا كنت ترغب في اختبار مجموعة فرعية فقط من يمكنك تحديد قائمة مفصولة بفواصل داخل عنصر targetProcesses بدلاً من ذلك:

<instrumentation
    ...
    android:targetProcesses=
            "androidx.test.mytestapp:myFirstAppProcessToTest,
             androidx.test.mytestapp:mySecondAppProcessToTest" ... />

فهم بنية الأداة

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

  1. ينشئ إطار عمل Android عملية جديدة ويبدأها لاتباع إرشادات تطبيقك هيكل التنقل. كل عملية Instrumentation يتضمن مثيلاً جديدًا AndroidJUnitRunner في هذه المرحلة، لا يمكن أن تتواصل عمليتا الأدوات مع كل منهما آخر.
  2. على كل AndroidJUnitRunner يقوم المثيل بتسجيل Espresso كإطار اختبار له.
  3. المثيلان AndroidJUnitRunner إجراء المصافحة لإنشاء اتصال بينهم. مماثل الوقت، وكل AndroidJUnitRunner هذه المنصة تربط جميع العملاء المسجَّلين، مثل Espresso، بحساباتهم نظرائها في عمليات أخرى بحيث يمكن لهؤلاء العملاء تشكيل قناة تواصل فيما بينهم.
  4. كل AndroidJUnitRunner المثيل يبحث عن مثيلات الأدوات والاختبار التي تمت إضافتها مؤخرًا إطار العمل، وإنشاء قنوات اتصال إضافية حسب الحاجة.

يوضح الشكل 1 نتيجة هذه العملية:

الشكل 1. يُعد تأسيس اتصال بين عدة قياس حالة الجهاز باستخدام قهوة إسبريسو متعددة العمليات

مصادر إضافية

لمزيد من المعلومات حول هذا الموضوع، يُرجى الاطّلاع على المراجع التالية.