أرشيف ملاحظات الإصدار التجريبي

‫AndroidX Test Espresso 3.1.1 وRunner 1.1.1 وRules 1.1.1 وMonitor 1.1.1 وAndroidTestOrchestrator 1.1.1 وCore 1.1.0 وTruth 1.1.0 وJUnit 1.1.0 (‫13-12-2018)

هذا هو الإصدار الثابت من AndroidX Test 1.1.0

  • Core
    • إتاحة إمكانية استخدام ActivityScenario مع الأنشطة التي تبدأ نشاطًا آخر

‫AndroidX Test Espresso 3.1.1-beta01 وRunner 1.1.1-beta01 وRules 1.1.1-beta01 وMonitor 1.1.1-beta01 وAndroidTestOrchestrator 1.1.1-beta01 وCore 1.1.0-beta01 وTruth 1.1.0-beta01 وJUnit 1.1.0-beta01 (‫06-12-2018)

  • Core
    • عنصر جديد من core-ktx kotlin extension تتضمّن واجهة برمجة التطبيقات ActivityScenario.launchActivity المتوافقة مع لغة Kotlin
    • واجهة برمجة التطبيقات ActivityScenario API الجديدة لتشغيل الأنشطة باستخدام أغراض مخصّصة
    • ‫ActivityScenario API الجديد لتلقّي نتيجة نشاط
    • إتاحة إغلاق ActivityScenario
  • Espresso
    • عدِّل withResourceNameMatcher وHumanReadables ليكون متوافقًا مع الإصدار 28 من واجهة برمجة التطبيقات.
    • تعديل وصف ReplaceTextAction ليشمل stringToBeSet
    • إتاحة Espresso في وضع الإيقاف المؤقت لحلقة الرسائل في Robolectric
  • JUnit
    • واجهة برمجة التطبيقات New ActivityScenarioRule، لتشغيل وإغلاق نشاط تلقائيًا عند إعداد الاختبار وإيقافه
    • عنصر جديد من عناصر junit-ktx kotlin الإضافية تتضمّن واجهة برمجة تطبيقات ActivityScenarioRule متوافقة مع Kotlin
  • Runner
    • جعل سلوك الحزمة ‎-e وملف الاختبار ‎-e متوافقًا عند تلقّي حِزم
  • الحقيقة
    • إضافة واجهات برمجة التطبيقات BundleSubject الخاصة بالقيم المنطقية والقابلة للتسلسل والقابلة للتسلسل كنوع

‫AndroidX Test Espresso 3.1.0 وRunner 1.1.0 وRules 1.1.0 وMonitor 1.1.0 وAndroidTestOrchestrator 1.1.0 وCore 1.0.0 وTruth 1.0.0 وJUnit 1.0.0 (‫24-10-2018)

  • الكل
    • ضبط minSdkVersion على 14 وtargetSdkVersion على 28
  • Espresso
    • إصلاح withContentDescription للعمل مع الأنواع غير السلسلة
    • إتاحة استخدام Espresso على Robolectric
    • المشكلة 72798625: لا تعمل Espresso ViewMatchers.withText عند تفعيل textAllCaps
    • إضافة إمكانية إدخال سلسلة من أحداث الحركة
  • النيّات
    • إضافة واجهة برمجة تطبيقات تجريبية لاسترداد قائمة الأهداف مخصّص للاستخدام مع تأكيدات صحة جديدة
  • Runner
    • إضافة ميزة التطبيقات الفورية
    • إيقاف androidx.test.runner.AndroidJUnit4 نهائيًا واستبداله بـ androidx.test.ext.junit.runners.AndroidJUnit4
  • المراقبة
    • إيقاف androidx.test.InstrumentationRegistry نهائيًا واستبداله بـ androidx.test.platform.app.InstrumentationRegistry وandroidx.test.core.app.ApplicationProvider
  • AndroidTestOrchestrator
    • لا تفعِّل معالجة بيانات التغطية في أداة التنسيق إلا إذا تم تمرير كلّ من وسيطتَي coverage وcoverageFilePath.
    • انتظار برنامج تصحيح الأخطاء فقط عند ضبط الخيار ‎-debug، وليس عند إدراج حالات اختبار ATO. تمت إضافة علامة orchestratorDebug جديدة لتصحيح أخطاء أداة التنسيق نفسها
  • Core
    • عنصر جديد! تتضمّن واجهات برمجة تطبيقات جديدة تتيح إجراء اختبارات محلية وعلى الجهاز لكلٍّ مما يلي:
      • استرداد السياق: ApplicationProvider
      • التحكّم في مراحل النشاط: ActivityScenario(beta)
      • أدوات إنشاء MotionEvent وPackageInfo
      • فئة الأداة المساعدة القابلة للتقسيم
  • الحقيقة
    • عنصر جديد! يتضمّن عناصر صحيحة مخصّصة لكلّ من Notification وIntent وBundle وParcelable وMotionEvent
  • JUnit
    • عنصر جديد! يتضمّن فئة مشغّل JUnit‏ androidx.test.ext.junit.runners.AndroidJUnit4 التي تتيح إجراء الاختبارات على الجهاز والاختبارات المحلية.

‫Espresso 3.0.2-beta1 وRunner 1.0.2-beta1 وRules 1.0.2-beta1 وMonitor 1.0.2-beta1 وAndroidTestOrchestrator 1.0.2-beta1 (‫16-04-2018)

  • Espresso
    • تغيير غير متوافق في واجهة برمجة التطبيقات:
      • لقد تم لفت انتباهنا في المشكلة 64062890 إلى أنّنا كنا نستخدم Guava Optional في واجهة برمجة التطبيقات المتاحة للجميع. كان هذا إهمالاً فادحًا من جانبنا . نتيجةً لذلك، تم إجراء تغيير على واجهة برمجة التطبيقات العامة في هذا الإصدار لمعالجة هذه المشكلة. لقد قدّمنا برنامج تضمين غير جذّاب لفئة Guava Optional، واسمه EspressoOptional، وهو متوفّر ضمن مساحة الاسم "android.support.test.espresso.util". على المطوّرين الذين كانوا يستخدمون واجهة برمجة التطبيقات Guava Optional تغيير عمليات الاستيراد والمراجع لاستخدام EspressoOptional أثناء التحديث إلى هذا الإصدار الجديد. نعتذر عن أي إزعاج قد يسببه لك هذا الأمر.
    • تم الآن وضع العلامة ‎ @CheckReturnValue على واجهتَي برمجة التطبيقات onView() وonData() لمنع حدوث أخطاء
    • تم إصلاح ملف POM الخاص بمكتبة espresso-core لكي لا يتم جلب تبعية "القواعد"، بل يتم جلبها من خلال ملف POM الخاص بمكتبة espresso-intents. من المفترض أن يكون هذا التغيير NoOp للمطوّرين لأنّه لا يمكن استخدام espresso-intents بدون espresso-core.
    • المشكلة 65486414: Espresso لا يتضمّن تبعية guava
    • المشكلة 65576174: تتسبّب عملية المزامنة في Espresso IdlingResourceRegistry في تعذُّر إجراء الاختبار الثاني
    • المشكلة 65568629: Espresso.onIdle لا تستخدم IdlingRegistry
    • المشكلة 69333598: الإصدار 3.0.1 من Espresso غير متوافق مع الإصدار 11.6.0 من play-services-auth في وحدة مكتبة Android.
    • المشكلة 64062890: النوع الاختياري الداخلي الذي تعرضه واجهة AdapterViewProtocol
    • المشكلة 64091847: يجب ألا يعتمد الإصدار 3.0.0 من Espresso على مشغّل الاختبار
    • المشكلة 73722050: حِزم espresso-contrib 3.0.2-alpha1 تتضمّن فئات android.arch.{lifecycle/core}
  • Espresso-remote
    • هذا عنصر جديد تمامًا. لقد فصلنا جميع وظائف العمليات المتعددة في Espresso خارج عنصر espresso-core. هذا الإصدار أكثر وضوحًا ومن المفترض أن يقلّل بشكل كبير من الحجم الإجمالي وعدد الطرق في espresso-core.
  • Runner
    • اقتطاع تتبُّع تسلسل استدعاء الدوال البرمجية إذا كان كبيرًا جدًا بالنسبة إلى عملية ربط. بما أنّ AJUR يحتاج إلى إرسال تقارير عن حالات الفشل إلى "إدارة الحساب" من خلال Binder IPC، علينا التأكّد من عدم تجاوز حدّ معاملات Binder، وهو 1 ميغابايت لكل عملية.
    • المشكلة 65828576: تعطُّل TestRequestBuilder عند تنفيذ اختبار في فئة تتضمّن @Ignore
    • المشكلة 37057596: لا نتعامل مع حالات الفشل في ‎ @BeforeClass
  • القواعد
    • احرص على إصدار مرجع للنشاط قيد الاختبار بعد إجراء تغييرات في مراحل النشاط. أثناء مدة الاختبار، يمكن الآن تعديل النشاط مباشرةً باستخدام المرجع الذي تم الحصول عليه من ‎ #getActivity(). إذا تم إنهاء النشاط وإعادة تشغيله، يشير المرجع الذي تعرضه ‎ #getActivity() الآن دائمًا إلى مثيل النشاط الحالي.
    • المشكلة 64389280: لا يوفّر GrantPermissionRule إذن WRITE_EXTERNAL_STORAGE
    • المشكلة 37065965: تسريب النشاط في ActivityTestRule بعد تغيير اتجاه الشاشة
    • المشكلة 75254050: لا تعدّل ActivityTestRule مثيل النشاط أثناء تغييرات الإعدادات
    • المشكلة 64464625: يتعذّر تنفيذ مهام واجهة المستخدم في طريقة finish() الخاصة بـ Activity
  • AndroidTestOrchestrator
    • مرِّر العلامات -e coverage true -e coverageFilePath /sdcard/foo/ لإنشاء ملفات التغطية في الموقع الجغرافي المحدّد (يجب أن يكون لدى التطبيق إذن الكتابة في الموقع الجغرافي المحدّد). أصبح اصطلاح تسمية ملفات التغطية على النحو التالي: com.foo.Class#method1.ec. يُرجى العِلم أنّ هذه الميزة لا تتوفّر إلا عند التشغيل في الوضع المعزول. بالإضافة إلى ذلك، لا يمكن استخدامها مع العلامة coverageFile في AndroidJUnitRunner. لأنّ ملفات التغطية التي يتم إنشاؤها تحلّ محل بعضها البعض.
    • مرِّر العلامة -e clearPackageData إذا كنت تريد أن ينفّذ المنسّق الأوامر pm clear context.getPackageName() وpm clear targetContext.getPackageName() بين عمليات استدعاء الاختبار. يُرجى العِلم أنّ السياق في الأمر clear هو سياق التطبيق قيد الاختبار.
    • تم إصلاح المشكلة: عند إجراء اختبار فارغ، أي بدون ‎ @Test داخل الهدف، تختلف نتيجة الاختبار عن الوضع القديم.
    • المشكلة 72758547: يتسبّب Test Orchestrator في عدم اكتمال بيانات تغطية Jacoco، ولا يحتوي إلا على بيانات آخر عملية اختبار
    • المشكلة 67916042: منسّق الاختبارات من Android : تم إيقاف التنفيذ بسبب تعطُّل العملية نتيجة خطأ OutOfMemory
    • المشكلة 77752735: تعطُّل Orchestrator بسبب TransactionTooLargeException
    • المشكلة 77549481: يجب أن ينفّذ Test Orchestrator الأمر "pm clear" بعد كل اختبار

‫Espresso 3.0.2-alpha1 وRunner 1.0.2-alpha1 وRules 1.0.2-alpha1 وAndroidTestOrchestrator 1.0.2-alpha1 (‫05-12-2017)

  • Espresso

    • يتضمّن Intents الآن استجابة قابلة للاستدعاء، ما يسمح بتنفيذ الاختبارات بعد تسجيل هدف تم تنشيطه ولكن قبل عرض كائن Instrumentation.ActivityResult.
  • Runner

    • تم فصل ملف Monitor Maven artifact com.android.support.test:monitor:<version>، للمستخدمين الذين يحتاجون إلى MonitoringInstrumentation بدون ميزات تشغيل الاختبار وJUnit.

      إذا كنت تستخدم com.android.support.test:runner:<version>، سيعمل كل شيء على النحو المتوقّع، لأنّ Gradle يجلب تلقائيًا الوحدة monitor كعنصر تابع للوحدة runner.

    • تمت إضافة العلامة newRunListenerOrderMode. عندما تكون قيمة true هي true، يتم تشغيل أدوات معالجة الأحداث التي يحدّدها المستخدم قبل أدوات معالجة الأحداث التلقائية. (نتوقّع أن يصبح هذا السلوك هو الإعداد التلقائي في النهاية).

    • المشكلة 65828576: يتعطّل TestRequestBuilder عند تشغيل الاختبارات في فئة تمّت إضافة التعليق التوضيحي @Ignore إليها (بشكل مستقل بدون تشغيل الاختبار أو ميزات JUnit).

  • AndroidTestOrchestrator

    • يتم الآن التعامل مع الاختبارات الفارغة بالطريقة نفسها التي يتم بها التعامل مع الاختبارات غير المنسَّقة AndroidJUnitRunner.
    • يمكن لأداة Orchestrator الآن التعامل مع ناتج قياسي كبير جدًا من AndroidJUnitRunner.

Espresso 3.0.1 وRunner 1.0.1 وRules 1.0.1 وAndroidTestOrchestrator 1.0.1 (‫28-08-2017)

  • Espresso

    • تمت إضافة الخيار IdlingPolicy لإيقاف onTimeout() عند ربط مصحّح أخطاء خطوة بخطوة بالجهاز الافتراضي.
    • المشاكل 64024656 و64247586 و64525881: لا يتم الإبلاغ عن حالات تعذُّر تحميل الفئات غير الناجحة إلا إذا كان المستخدم يحمّل فئات معيّنة من خلال تضمين وسيطة مشغّل الفئة -e.
    • المشكلة 64877246: إضافة الفئات الناقصة إلى ملف JAR الخاص بالمصادر
  • Runner

    • منطق ShardingFilter مبسط
    • المشكلة 65025743: أصبح فلتر @RequiresDevice يتوافق الآن مع محاكيات FTL.
  • AndroidTestOrchestrator

    • لا تكرّر حالات تعذُّر إنشاء التقارير. عندما يتعطّل إحدى عمليات الاختبار بعد تعذُّرها، يتم الآن تسجيل حالة تعذُّر واحدة فقط للاختبار.
    • تم إصلاح Javadoc الخاص بـ Orchestrator.
    • يتم الآن الإشارة إلى الاختبارات على أنّها لم تُجرَ إذا تعطّلت العملية عن بُعد.
    • التعامل الآن مع حالات الاختبار التي تم تجاهلها
    • يستبعد الآن حالات الاختبار التي تم تجاهلها من التذييل لتتطابق مع النتائج القديمة.
    • تم إصلاح المشاكل المتعلّقة بأذونات وقت التشغيل. تتم الآن كتابة تقارير الاختبار على بطاقة SD في الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث.

‫Espresso 3.0.0 وRunner 1.0.0 وRules 1.0.0 وAndroidTestOrchestrator 1.0.0 (‫25-07-2017، إعلان)

التغييرات التي قد تؤدي إلى أعطال

  • جميع العناصر
    • إيقاف التوافق مع مستويات واجهة برمجة التطبيقات الأقل من 15، ولكن سيظل الحد الأدنى من حزمة تطوير البرامج (SDK) يشير إلى المستوى 9 من واجهة برمجة التطبيقات لمنح المستخدمين وقتًا للترقية
  • Espresso
    • تم حذف الفئة المتوقّفة نهائيًا android.support.test.espresso.contrib.CountingIdlingResource ونقلها إلى android.support.test.espresso.idling.CountingIdlingResource
    • تم الآن نقل Guava إلى مساحة اسم "داخلية" مختلفة باستخدام jarjar. إذا كنت تستخدم واجهة برمجة تطبيقات Guava عن طريق الخطأ من خلال مساحات اسم Espresso، قد تلاحظ حدوث أعطال.
      • إزالة أي إشارات إلى Guava المحجوبة (.core.deps.guava.)
      • ترقية إصدار Support Library إلى 25.4.0 أو إصدار أحدث

المشاكل المعروفة

الميزات الجديدة

  • القواعد
  • AndroidTestOrchestrator
    • يوفّر منسّق الاختبارات من Android طريقة جديدة لجمع الاختبارات وتشغيلها، مع التركيز على الدقة والعزل. ‫Orchestrator هي عملية مستقلة لقياس حالة التطبيق، وتنشئ عملية واحدة لتشغيل أداة قياس حالة التطبيق لكل اختبار وتجمع النتائج.
      • تؤدي أعطال التطبيق إلى إيقاف أداة قياس حالة التطبيق، ولكن ليس أداة التنسيق، ما يسمح لمجموعة الاختبارات بمواصلة عملها.
      • يجب تثبيت حزمة APK الخاصة بأداة التنسيق – 'com.android.support.test:orchestrator:1.0.0'
      • يتضمّن الإصدار 1.0 واجهة سطر أوامر فقط، ومن المخطّط له أن يتضمّن عمليات دمج مع Android Studio وFirebase Test Labs

إصلاح الأخطاء

  • Espresso
    • تحسين مزامنة العرض الجذر لتقليل عدم الاستقرار بشكل كبير
    • إصلاح تلف IdlingResourceRegistry
    • مزامنة أفضل مع عناصر IdlingResource
    • المشكلة 37132680: لا ينتظر Espresso اكتمال إنشاء مربع الحوار قبل تنفيذ الإجراء التالي
    • المشكلة 37103280: يجب أن تتضمّن Espresso قواعد ProGuard الخاصة بالمستهلكين حتى لا يُطلب منهم إضافتها
    • المشكلة 37094726: تحتوي Espresso Intents على تصنيف تطبيق غير ضروري
    • المشكلة 37093953: Espresso: لا يتوفّر خيار للتحقّق من نص الخطأ الفارغ/الخالي
    • المشكلة 37071776: espresso-core تضمّن ملفات .pom من Guava
    • المشكلة 37062612: خطأ NullPointerException في release()
    • المشكلة 37063389: عدم إمكانية تجميع Guava وespresso-web كاعتمادات androidTest
    • المشكلة 37070533: إضافة دعم NavigationView في مكتبة الدعم الخاصة بتصميم Android
  • Runner
    • إصلاح إمكانية استخدام @UiThreadTest مع @Test(timeout = 123)
    • Fixed -e notClass runner arg
    • تم إصلاح -e log ليتوافق مع حِزم اختبار JUnit3 وJUnit4، بالإضافة إلى مشغّلي Parameterized و Enclosed.
    • المشكلة 37663530: الانتظار إلى أن تنتهي جميع الأنشطة قبل وبعد كل طريقة اختبار
    • المشكلة 37132680: لا ينتظر Espresso اكتمال إنشاء مربّع الحوار قبل تنفيذ الإجراء التالي
    • المشكلة 37123213: تم تجاهل @RequiresDevice في واجهة التطبيق الثنائية x86_64
    • المشكلة 37101485: يتم تجاهل بعض الوسيطات التي يوفّرها ملف البيان للدالة AndroidJUnitRunner، مثل حجم الاختبار والتعليق التوضيحي والتصحيح
    • المشكلة 37082857: يتعذّر تنفيذ اختبارات Espresso شبه المتوازية على العناصر الثابتة
    • المشكلة 37063396: لم يتم ضبط السياق باستخدام ProviderTestCase2 (يؤدي إلى NullPointerException)
  • القواعد
  • UiAutomator
    • setUiAutomationFlags() للاستخدام مع UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES: يتيح ذلك استخدام UiAutomator أثناء تشغيل خدمات تسهيل الاستخدام الأخرى
    • المشكلة 37082813: setText() عندما تكون كائنات EditText فارغة، يتم عرض الخطأ NullPointerException إذا كان مستوى واجهة برمجة التطبيقات 19 أو أقل

التغييرات البارزة الأخرى

  • يتم الآن نشر الملفات الثنائية من خلال Google Maven
  • تقليل حجم ملفَي espresso-core وespresso-web JAR – تم الآن تطبيق ProGuard على التبعيات المضمّنة
  • تتضمّن جميع ملفات .aar الآن قواعد ProGuard
  • إضافة ملفات proguard_library.cfg إلى العناصر التي تم إصدارها
  • تتضمّن واجهة Tapper إصدارًا جديدًا من sendTap() لتنفيذه

المساهمات الخارجية

‫Espresso 2.2.2 وRunner/Rules 0.5 (الإصدار الصامت في 22 فبراير 2016)

الميزات الجديدة

  • espresso
    • المشكلة 194253: إضافة دعم NavigationView في مكتبة دعم تصميم Android
    • تمت إضافة عمليات تحقّق من الحركات وتأثيرات الانتقال المفعّلة
    • ViewMatcher API الجديد: withResourceName()

إصلاح الأخطاء

  • espresso
    • المشكلة 195331: تضمين ملفات pom الخاصة بمكتبة Guava في espresso-core
    • نقل مورد احتساب وقت الخمول خارج espresso-contrib
  • القواعد
    • المشكلة 187249: خطأ NPE في Intents.release()
  • runner
    • المشكلة 196066: الوسيطة -e log true في AndroidJUnitRunner لا تتجاوز الاختبار الفعلي
    • انتظار برنامج تصحيح الأخطاء في onCreate() من عملية التنفيذ
    • نقل جميع التعليقات التوضيحية للاختبار المتوافقة من المنصة إلى ATSL
    • إزالة تفريغ تتبُّع تسلسل استدعاء الدوال البرمجية بشأن عدم توفّر JSBridge
    • ثابت AndroidAnnotatedBuilder

التغييرات البارزة الأخرى

  • تم إيقاف الإصدار التجريبي من "ActivityTestRule" و"UiThreadTestRule" و"IntentsTestRule" و"ServiceTestRule"
  • إضافة ملف إعدادات نمط الرمز لتنسيق الرمز الموحّد

Espresso 2.2.1, Runner/Rules 0.4 (2015-09-15)

الميزات الجديدة

  • القواعد
    • تمت إضافة أداة إنشاء IntentsTestRule جديدة لتكون متوافقة تمامًا مع ActivityTestRule
  • runner
    • تمت إضافة عملية تثبيت multidex خاصة بالمستوى 15 لواجهة برمجة التطبيقات والإصدارات الأقدم
    • تمت إضافة فلاتر الاستبعاد إلى الفئة والحزمة:
      • إجراء جميع الاختبارات باستثناء تلك الموجودة في فئة معيّنة: adb shell am instrument -w -e notClass com.android.foo.FooTest
      • تشغيل كل الاختبارات باستثناء اختبار واحد: adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
      • إجراء جميع الاختبارات باستثناء حزمة معيّنة: adb shell am instrument -w -e notPackage com.android.foo.bar

المساهمات الخارجية

  • espresso
    • ‫157911: إضافة أداة مطابقة العرض لنوع الإدخال في الكائن EditText
    • ‫157912: إضافة أداة مطابقة للعرض لمطابقة نص الخطأ في كائن EditText
    • ‫150674: إضافة دعم DrawerActions للأدراج ذات الجاذبية العشوائية
    • ‫150744: لم يعُد DrawerActions يتسرّب parentListener
    • ‫153303: تم تحديد الجاذبية في عمليات التحقّق من "هل الدرج مفتوح أم مغلق"
    • ‫157910: إضافة مصانع DrawerLayout لإجراءات الفتح والإغلاق

إصلاح الأخطاء

  • espresso
    • تضمن السمة ViewActions.closeSoftKeyboard() الآن إخفاء لوحة المفاتيح الافتراضية بالكامل
    • تم إصلاح مشكلة المزامنة مع طريقة Espresso.pressBack() في Espresso على المستوى 21 من واجهة برمجة التطبيقات والإصدارات الأحدث
    • تم إصلاح مشكلة المزامنة في الرسوم المتحركة لإغلاق لوحة المفاتيح على المستوى 23 من واجهة برمجة التطبيقات
  • القواعد
    • تم إصلاح الخطأ ServiceTestRule في المستوى 23 من واجهة برمجة التطبيقات، ويجب دائمًا استدعاء startService() باستخدام Intent صريح
  • runner
    • إصلاح مشكلة عدم التوافق مع Gradle JaCoCo
    • إصلاح مشكلة عدم توفّر ميزة تقسيم الاختبار
    • تم إصلاح حالة غير متسقة في أداة تشغيل الاختبار بعد انتهاء المهلة المحدّدة لاختبار الأنماط JUnit3

التغييرات البارزة الأخرى

  • إصلاحات في Javadoc وتحسينات على رسائل الخطأ
  • تجاهل طرق suite() وعدم تجاهل أخطاء التهيئة عند استخدام فلاتر الطرق

Espresso 2.2 / ATSL 0.3 (2015-06-09)

الميزات الجديدة

  • espresso-web 2.2
    • إتاحة WebView الجديدة
  • espresso-core 2.2
    • تم نقل البيانات لاستخدام الإصدار 2 من Dagger
    • تم نقل البيانات لاستخدام الإصدار 1.3 من Hamcrest
  • espresso-contrib 2.2
    • عمليات التحقّق من إمكانية الوصول
    • DrawerActions دعم الجاذبية
  • القواعد 0.3
    • قاعدة واحدة (DisableOnAndroidDebug)
  • runner 0.3
    • الترقية من JUnit الإصدار 4.10 إلى JUnit الإصدار 4.12
    • تم نقل البيانات لاستخدام الإصدار 1.3 من Hamcrest

إصلاح الأخطاء

  • تم إصلاح مشكلة تسريب DrawerActions ParentListener
  • يتم الآن التعامل مع تعذُّر استيفاء الافتراض على أنّه اختبار يتم تجاهله بدلاً من اختبار فاشل
  • تم إصلاح مشكلة تسريب مثيلات النشاط MonitoringInstrumentation من خلال ExecutorService
  • تم إصلاح مشكلة الأنشطة غير المرتبطة التي تبقى عالقة في مرحلة الإيقاف
  • عدِّل Until.scrollFinished() لعرض القيمة "صحيح" إذا لم يتم إنشاء أي أحداث تمرير. الحماية من أخطاء NPE المحتملة في UiObject2#setText()

‫Espresso 2.1 وTest Runner/Rules 0.2 وUIAutomator 2.1.0 (‫21-04-2015)

التغييرات التي قد تؤدي إلى أعطال

  • تم تقسيم عنصر Test Runner إلى عنصرَين، وتم تغيير الاسم من com.android.support.test:testing-support-lib:0.1 إلى com.android.support.test:runner:0.2 و com.android.support.test:rules:0.2.

الميزات الجديدة

  • espresso-intents: واجهة برمجة تطبيقات مشابهة لواجهة Mockito تتيح إجراء اختبارات محكمة بين الأنشطة من خلال السماح لمطوّري الاختبارات بالتحقّق من النوايا الصادرة وإنشاء نماذج لها
    • IntentsTestRule: يوسّع ActivityTestRule، ويتم تهيئته وإصداره Espresso-Intents في اختبارات واجهة المستخدم الوظيفية
  • espresso-core
    • ViewActions: تمت إضافة إمكانية تنفيذ عمليات تأكيد عالمية قبل تنفيذ الإجراءات. ويكون ذلك مفيدًا للأُطر الأخرى التي تستند إلى Espresso للتحقّق من صحة حالة تسلسل العرض الهرمي أثناء تنفيذ حزمة اختبار Espresso الحالية.
    • ViewMatchers.withContentDescription() resId زيادة التحميل
  • القواعد
    • ActivityTestRule: توفّر هذه القاعدة اختبارًا وظيفيًا لنشاط واحد.
    • التعليقان التوضيحيان UiThreadRule وUiThreadTest: تسمح هذه القاعدة بتنفيذ طريقة الاختبار التي تمّت إضافة التعليق التوضيحي UiThreadTest إليها في سلسلة التعليمات الرئيسية للتطبيق (أو سلسلة تعليمات واجهة المستخدم).
    • ServiceTestRule: توفّر هذه القاعدة اختبارًا وظيفيًا لإحدى الخدمات
  • runner
    • ApplicationLifecycleCallback: دالة معالجة البيانات لمراقبة أحداث مراحل نشاط التطبيق
    • يمكن الآن أيضًا تحديد جميع وسيطات المشغّل في ملف بيان Android باستخدام علامة <meta-data>
  • UIAutomator
    • يمكن الآن لـ UiDevice.dumpWindowHierarchy() قبول File أو OutputStream

إصلاح الأخطاء

  • espresso
    • تعرض أداة مطابقة المؤشر الآن false إذا لم يتم العثور على العمود، ليتمكّن Hamcrest من الانتقال إلى المؤشر التالي
    • لم يعُد يحدث NullPointerException مع PreferenceMatchers withTitle
    • لم يعُد إلغاء تسجيل مصدر عدم النشاط يؤدي إلى اعتقاد Espresso بأنّ لدينا مصادر عدم نشاط مشغولة
    • إصدار "التعليقات التوضيحية المتوافقة" المُعدَّل الذي يستخدمه Espresso Contrib
  • runner
    • AndroidJUnit4 يتخطّى الآن الاختبارات التي تتضمّن فرضيات غير صحيحة
  • UIAutomator
    • تشغيل أدوات المراقبة لمنع StaleObjectException

التغييرات البارزة الأخرى

  • إضافة رسالة خطأ أفضل عندما يتعذّر كتابة نص باستخدام سلسلة غير لاتينية

UIAutomator 2.0 (2015-03-12)

تستند أداة UI Automator الآن إلى Android Instrumentation، ويمكنك إنشاء الاختبارات وتشغيلها باستخدام الأمر ./gradlew connectedCheck.

الإصدار 2.0 من Espresso، والإصدار 0.1 من Test Runner (تاريخ الإصدار: 19-12-2014)

التغييرات التي قد تؤدي إلى أعطال

  • تم نقل Espresso إلى مساحة اسم جديدة، من android.support.test.espresso إلى android.support.test.espresso
  • تمت إعادة تسمية عناصر Espresso
    • ‫"espresso-1.1.jar" أصبح الآن "espresso-core-release-2.0.jar"
    • تم نقل واجهة IdlingResource إلى مكتبة منفصلة: espresso-idling-resource-release-2.0.jar
    • تم نقل CountingIdlingResource إلى espresso-contrib-release-2.0.jar (كما كان من المفترض أن يكون دائمًا)
  • تمت إزالة الحزمة الاختيارية (التي تعتمد على Guava) من واجهة برمجة التطبيقات العامة من أجل إتاحة إعادة تجميع الحزمة التي تعتمد على Guava وتجنُّب تعارض DEX (وهو أحد الأسباب الرئيسية لصعوبة التطوير). تشمل الطرق المتأثرة ما يلي:
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

الميزات الجديدة

  • الإجراءات
    • ViewActions
      • replaceText()
      • openLink()
      • مرِّر سريعًا للأعلى وللأسفل
    • espresso-contrib
      • RecyclerViewActions: التعامل مع التفاعلات مع RecyclerViews
      • PickerActions: يتعامل مع التفاعلات مع أدوات اختيار Date وTime
  • عناصر المطابقة
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers: أدوات مطابقة لاختبار تخطيطات مرتبطة بتعدد اللغات
    • CursorMatchers: مجموعة من أدوات المطابقة لعناصر Cursor
  • التأكيدات
    • PositionAssertions، بما في ذلك isLeftOf() وisAbove(): مجموعة من ViewAssertions للتحقّق من الموضع النسبي للعناصر على الشاشة
    • LayoutAssertions: تأكيدات لاختبار تخطيط ذي صلة بتدويل التطبيق
  • تطبيق الاختبار: العديد من الأنشطة/الاختبارات التجريبية الجديدة
  • غير ذلك
    • Espresso.unregisterIdlingResources() وEspresso.getIdlingResources(): توفّر مرونة إضافية للعمل مع IdlingResources
    • ViewInteraction.withFailureHandler(): تتيح هذه السمة تجاهل معالج الأخطاء من onView()
    • onData() متوافق مع AdapterViews من خلال CursorAdapters

إصلاح الأخطاء

  • ViewMatchers.isDisplayed() تطابق المشاهدات التي تملأ الشاشة بأكملها، ولكنها لم تعُد أقل من% 90 من المعروض
  • لم يعُد تنفيذ إجراء التمرير السريع يؤدي إلى DrawerActions.openDrawer()، بل يؤدي إلى IdlingResourceTimeoutException.

التغييرات البارزة الأخرى

  • التبديل من الإنشاء باستخدام Maven إلى Gradle
  • نقل تبعيات Espresso (مثل Guava وDagger وHamcrest) لتجنُّب تعارضات DEX
  • تم تغييرها لعرض حالة النجاح أو الإخفاق عند تسجيل الموارد غير النشطة وإلغاء تسجيلها
  • توافق Lollipop: ضَع message.recycle() خلف واجهة لتفسير التغييرات ذات الصلة بالإصدار
  • تم تغيير مستوى حزمة تطوير البرامج (SDK) المستهدَفة إلى 21، ما يؤثر في الغالب في التطبيق التجريبي

الإصدار 1.1 (تاريخ الإصدار: 2014-01-08)

Espresso

  • swipeLeft وswipeRight ViewActions جديدان
  • دعم النوافذ المتعددة: ميزة متقدّمة تتيح اختيار النافذة المستهدَفة التي يجب أن ينفّذ فيها Espresso العملية
  • تحسينات على TypeTextAction: تتيح كتابة نص في عرض مركّز مسبقًا، ما يسهّل عملية إضافة نص
  • إصلاحات عديدة للأخطاء

Espresso Contrib Library

  • تحتوي هذه المكتبة الجديدة على ميزات تكمّل Espresso، ولكنّها ليست جزءًا من المكتبة الأساسية.
  • DrawerActions جديد للعمل على DrawerLayout: يعتمد على مكتبة Android Support Library، لذا سنبقيه خارج مكتبة Espresso الأساسية

الاختبارات النموذجية

  • تم نقل هذه الاختبارات لتكون في الحزمة نفسها التي يتضمّنها تطبيق الاختبار
  • تم إصلاح ملفات Maven POM لإزالة التبعيات المكرّرة في Guava، لذا من المفترض أن يعمل mvn install الآن