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

‫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
    • واجهة برمجة التطبيقات الجديدة 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 التي تتيح إجراء الاختبارات المحلية والاختبارات على الجهاز.

الإصدارات ‎3.0.2-beta1 من Espresso و‎1.0.2-beta1 من Runner و‎1.0.2-beta1 من Rules و‎1.0.2-beta1 من Monitor و‎1.0.2-beta1 من AndroidTestOrchestrator (‫16-04-2018)

  • Espresso
    • تغيير غير متوافق في واجهة برمجة التطبيقات:
      • لقد تم لفت انتباهنا في المشكلة 64062890 إلى أنّنا كنا نستخدم Guava Optional في واجهة برمجة التطبيقات العامة. كان هذا إهمالاً فادحًا من جانبنا . نتيجةً لذلك، تم إجراء تغيير على واجهة برمجة التطبيقات العامة في هذا الإصدار لمعالجة هذه المشكلة. لقد قدّمنا برنامج تضمين غير جذّاب لفئة Guava Optional، واسمه EspressoOptional، وهو يقع ضمن مساحة الاسم "android.support.test.espresso.util". على المطوّرين الذين كانوا يستخدمون واجهة برمجة التطبيقات Guava Optional تغيير عمليات الاستيراد والمراجع لاستخدام EspressoOptional أثناء التحديث إلى هذا الإصدار الجديد. نعتذر عن أي إزعاج قد يسببه لك هذا الأمر.
    • تم الآن وضع العلامة ‎ @CheckReturnValue على واجهتَي برمجة التطبيقات onView() وonData() لمنع حدوث أخطاء
    • تم إصلاح ملف espresso-core POM لكي لا يتم جلب تبعية "القواعد"، بل يتم جلبها من خلال ملف espresso-intents POM. من المفترض أن يكون هذا التغيير NoOp للمطوّرين لأنّه لا يمكن استخدام espresso-intents بدون espresso-core.
    • المشكلة 65486414: Espresso لا يتضمّن تبعية guava
    • المشكلة 65576174: يؤدي Espresso IdlingResourceRegistry.sync إلى تعذُّر إجراء الاختبار الثاني
    • المشكلة 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 يحتاج إلى إرسال تقارير عن حالات الفشل إلى "إدارة الحساب" من خلال التواصل البيني للعمليات (IPC)، علينا التأكّد من عدم تجاوز حد المعاملة في عملية الربط بين العمليات، وهو 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() بين عمليات استدعاء الاختبار. يُرجى العِلم أنّ السياق في الأمر "محو" هو سياق التطبيق قيد الاختبار.
    • تم إصلاح المشكلة: عند إجراء اختبار فارغ، أي بدون @Test داخل الهدف، تختلف نتيجة الاختبار عن الوضع القديم.
    • المشكلة 72758547: يتسبّب Test Orchestrator في عدم اكتمال بيانات تغطية Jacoco، حيث لا تتضمّن سوى بيانات آخر عملية اختبار
    • المشكلة 67916042: منسّق الاختبارات من Android : تم إيقاف التنفيذ عند تعطُّل العملية بسبب خطأ OutOfMemory
    • المشكلة 77752735: تعذُّر تشغيل Orchestrator بسبب TransactionTooLargeException
    • المشكلة 77549481: يجب أن ينفّذ "منسّق الاختبارات" الأمر "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.)
      • ترقية إصدار مكتبة الدعم إلى 25.4.0 أو إصدار أحدث

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

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

  • Runner
    • InterceptingActivityFactory و SingleActivityFactory: توفّر هذه الفئة إمكانية اختبار نشاط بشكل مستقل عن العالم الخارجي من خلال إلغاء طُرق مثل startService() و sendBroadcast()
    • إضافة إمكانية استخدام JUnitParams مع AndroidJUnitRunner
    • ابدأ في التعامل مع @UiThreadTest على مستوى مشغّل الاختبار الأساسي وأوقِف @UiThreadTestRule نهائيًا، ما يتيح استخدام التعليق التوضيحي @UiThreadTest مباشرةً في الطرق التي تم وضع تعليق توضيحي لها باستخدام @Before و @After.
    • يتيح التعليق التوضيحي @SdkSupress الآن استخدام القيمة maxSdkVersion (المشكلة 37067792)
    • -e classLoader – توفير إمكانية تمرير أدوات تحميل الصفوف باستخدام وسيطات المشغّل
    • -e filter – إضافة إمكانية تحديد فلاتر JUnit مخصّصة باستخدام وسيطات المشغّل
    • -e runnerBuilder: تتيح للمطوّرين تقديم عمليات تنفيذ خاصة بهم للواجهة RunnerBuilder التي يمكنها تحديد ما إذا كان بإمكانهم تنفيذها على فئة معيّنة وكيفية تنفيذها
  • القواعد
  • AndroidTestOrchestrator
    • توفّر أداة منسّق الاختبارات من Android طريقة جديدة لجمع الاختبارات وتشغيلها، مع التركيز على الدقة والعزل. ‫Orchestrator هي عملية مستقلة لقياس حالة التطبيق، وتنشئ عملية واحدة لتشغيل أداة قياس حالة التطبيق لكل اختبار وتجمع النتائج.
      • تؤدي أعطال التطبيق إلى إيقاف أداة قياس الأداء الخاصة بالمشغّل، ولكن ليس أداة التنسيق، ما يسمح لمجموعة الاختبار بمواصلة عملها.
      • يجب تثبيت حزمة APK الخاصة بأداة التنسيق – 'com.android.support.test:orchestrator:1.0.0'
      • يتضمّن الإصدار 1.0 واجهة سطر أوامر فقط، ومن المخطّط له أن يتضمّن عمليات دمج مع استوديو Android ومختبر Firebase الافتراضي.

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

  • Espresso
    • تحسين مزامنة العرض الجذر لتقليل عدم الاستقرار بشكل كبير
    • إصلاح تلف IdlingResourceRegistry
    • مزامنة أفضل مع عناصر IdlingResource
    • المشكلة 37132680: لا ينتظر Espresso اكتمال إنشاء مربع الحوار قبل تنفيذ الإجراء التالي
    • المشكلة 37103280: يجب أن تتضمّن Espresso قواعد ProGuard للمستهلكين حتى لا يُطلب منهم إضافتها
    • المشكلة 37094726: تحتوي Espresso Intents على تصنيف تطبيق غير ضروري
    • المشكلة 37093953: Espresso: لا يتوفّر خيار للتحقّق من نص الخطأ الفارغ/الخالي
    • المشكلة 37071776: espresso-core تضمّن ملفات .pom من Guava
    • المشكلة 37062612: خطأ NPE في release()
    • المشكلة 37063389: عدم إمكانية تجميع Guava وespresso-web كاعتمادات androidTest
    • المشكلة 37070533: إضافة دعم NavigationView في مكتبة الدعم الخاصة بتصميم Android
  • Runner
    • إصلاح إمكانية استخدام @UiThreadTest مع @Test(timeout = 123)
    • وسيط -e notClass للعدّاء الثابت
    • تم إصلاح -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() يؤدي إلى ظهور الخطأ NullPointerException إذا كان مستوى واجهة برمجة التطبيقات 19 أو أقلEditText

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

  • يتم الآن نشر الملفات الثنائية من خلال 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)

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

  • تم تقسيم أداة إنشاء الاختبار إلى قسمَين، وتم تغيير الاسم من 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 (‫12-03-2015)

تستند أداة 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)

مظهر إسبرسو

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

Espresso Contrib Library

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

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

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