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- استخدِم
getInstance().register()بدلاً منregisterIdlingResources()
- استخدِم
- تم الآن نقل Guava إلى مساحة اسم "داخلية" مختلفة باستخدام jarjar. إذا كنت تستخدم واجهة برمجة تطبيقات Guava عن طريق الخطأ من خلال مساحات اسم Espresso، قد تلاحظ حدوث أعطال.
- إزالة أي إشارات إلى Guava المحجوبة (
.core.deps.guava.) - ترقية إصدار Support Library إلى 25.4.0 أو إصدار أحدث
- إزالة أي إشارات إلى Guava المحجوبة (
- تم حذف الفئة المتوقّفة نهائيًا
المشاكل المعروفة
- AndroidTestOrchestrator
- لا تتوفّر حاليًا وسيطات مشغّل
-e numShardsو-e shardIndex - لا تتوفّر حاليًا الاختبارات المحدّدة المَعلمات
- لا تتوفّر حاليًا وسيطات مشغّل
الميزات الجديدة
- Espresso
- إصدار جديد من Multiprocess Espresso
متوافق مع الإصدار 26 من واجهة برمجة التطبيقات
espresso-coreوespresso-web، ولكن ليسespresso-contrib - واجهة برمجة تطبيقات جديدة خفيفة الوزن
IdlingRegistry- تم النشر كجزء من
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - الطُرق المتوقّف عن استخدامها نهائيًا:
- تم النشر كجزء من
- واجهة برمجة تطبيقات جديدة للمساعدة في المزامنة مع
Executors- New maven artifact:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - يتضمّن الفئتين
IdlingScheduledThreadPoolExecutorوIdlingThreadPoolExecutor
- New maven artifact:
- واجهة برمجة تطبيقات جديدة للمساعدة في المزامنة مع طلبات الشبكة وردودها
- New maven artifact:
com.android.support.test.espresso.idling:idling-net:3.0.0 - يتضمّن المحتوى "
UriIdlingResource"
- New maven artifact:
- عوامل مطابقة جديدة لعرض
espresso-core:hasBackground()تتم مطابقتها مع مورد قابل للرسم في الخلفية لكائنViewhasTextColor()تتم مطابقتها مع لون كائنTextView
- طُرق جديدة لتنفيذ إجراءات العرض:
- تحسين
scrollTo()إجراء العرض ليعمل مع العناصر التابعة لـListView repeatedlyUntil()– تنفّذ هذه السمةViewActionالمحدّدة على طريقة عرض إلى أن تتطابق طريقة العرض معViewMatchersالمطلوبة
- تحسين
- طُرق Espresso الجديدة:
pressBackUnconditionally()– تشبهpressBack()ولكنها لا تعرض استثناءً عند التنقّل باستخدام EspressonoActivity()– يزيل الحاجة إلى انتظار نشاط قبل تنفيذViewActionأوViewAssertiononIdle()– تكرِّر سلسلة التعليمات الرئيسية إلى أن يصبح التطبيق غير نشطonIdle(Callable<T>)– هي نفسهاonIdle()، ولكنها تأخذCallableإضافية كمعلَمة، ويتم تنفيذها بعد أن يصبح التطبيق غير نشط
webScrollIntoView()– ذرةespresso-webجديدة تتيح لك التنقّل داخلWebView
- إصدار جديد من Multiprocess Espresso
متوافق مع الإصدار 26 من واجهة برمجة التطبيقات
- Runner
-
InterceptingActivityFactoryوSingleActivityFactory: توفّر هذه الفئة إمكانية اختبار نشاط بشكل مستقل عن العالم الخارجي من خلال إلغاء طُرق مثلstartService()وsendBroadcast() -
إضافة إمكانية استخدام JUnitParams
مع
AndroidJUnitRunner -
ابدأ في معالجة
@UiThreadTestعلى مستوى مشغّل الاختبار الأساسي وأوقِف@UiThreadTestRuleنهائيًا، ما يتيح استخدام@UiThreadTestمباشرةً في الطرق التي تم وضع تعليقات توضيحية عليها باستخدام@Beforeو@After -
يتيح التعليق التوضيحي
@SdkSupressالآن استخدام القيمةmaxSdkVersion(المشكلة 37067792) -
-e classLoader– توفير إمكانية تمرير أدوات تحميل الصفوف باستخدام وسيطات المشغّل -
-e filter– إضافة إمكانية تحديد فلاتر JUnit مخصّصة باستخدام وسيطات المشغّل -
-e runnerBuilder: تتيح للمطوّرين تقديم عمليات تنفيذ خاصة بهمRunnerBuilderيمكنها تحديد ما إذا كان بإمكانهم تنفيذها على فئة معيّنة وكيفية تنفيذها
-
- القواعد
ProviderTestRule– واجهة برمجة تطبيقات جديدة لاختبار عناصرContentProvidergetActivityResult()وActivityResultMatchers– واجهة برمجة تطبيقات جديدة لاسترداد نتيجة النشاط من نشاط تم فيه استدعاءsetResult()
- AndroidTestOrchestrator
- يوفّر منسّق الاختبارات من Android طريقة جديدة لجمع الاختبارات وتشغيلها، مع التركيز على الدقة والعزل. Orchestrator هي عملية مستقلة لقياس حالة التطبيق، وتنشئ عملية واحدة لتشغيل أداة قياس حالة التطبيق لكل اختبار وتجمع النتائج.
- تؤدي أعطال التطبيق إلى إيقاف أداة قياس حالة التطبيق، ولكن ليس أداة التنسيق، ما يسمح لمجموعة الاختبارات بمواصلة عملها.
- يجب تثبيت حزمة APK الخاصة بأداة التنسيق –
'com.android.support.test:orchestrator:1.0.0' - يتضمّن الإصدار 1.0 واجهة سطر أوامر فقط، ومن المخطّط له أن يتضمّن عمليات دمج مع Android Studio وFirebase Test Labs
- يوفّر منسّق الاختبارات من Android طريقة جديدة لجمع الاختبارات وتشغيلها، مع التركيز على الدقة والعزل. Orchestrator هي عملية مستقلة لقياس حالة التطبيق، وتنشئ عملية واحدة لتشغيل أداة قياس حالة التطبيق لكل اختبار وتجمع النتائج.
إصلاح الأخطاء
- 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 notClassrunner arg - تم إصلاح
-e logليتوافق مع حِزم اختبار JUnit3 وJUnit4، بالإضافة إلى مشغّليParameterizedوEnclosed. - المشكلة 37663530: الانتظار إلى أن تنتهي جميع الأنشطة قبل وبعد كل طريقة اختبار
- المشكلة 37132680: لا ينتظر Espresso اكتمال إنشاء مربّع الحوار قبل تنفيذ الإجراء التالي
-
المشكلة 37123213:
تم تجاهل
@RequiresDeviceفي واجهة التطبيق الثنائية x86_64 -
المشكلة 37101485: يتم تجاهل بعض الوسيطات التي يوفّرها ملف البيان
للدالة
AndroidJUnitRunner، مثل حجم الاختبار والتعليق التوضيحي والتصحيح - المشكلة 37082857: يتعذّر تنفيذ اختبارات Espresso شبه المتوازية على العناصر الثابتة
-
المشكلة 37063396: لم يتم ضبط السياق
باستخدام
ProviderTestCase2(يؤدي إلىNullPointerException)
-
إصلاح إمكانية استخدام
- القواعد
- تم إصلاح دورة الحياة
ActivityTestRuleلتوحيد السلوك في عملية تهيئةActivityTestRuleالعادية والكسولة - المشكلة 37079943: إصلاح
ServiceTestRuleللسماح بإعادة الربط - المشكلة 37109342: إضافة
getActivityResult()وActivityResultMatchers
- تم إصلاح دورة الحياة
- UiAutomator
setUiAutomationFlags()للاستخدام معUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES: يتيح ذلك استخدامUiAutomatorأثناء تشغيل خدمات تسهيل الاستخدام الأخرى- المشكلة 37082813:
setText()عندما تكون كائناتEditTextفارغة، يتم عرض الخطأNullPointerExceptionإذا كان مستوى واجهة برمجة التطبيقات 19 أو أقل
التغييرات البارزة الأخرى
- يتم الآن نشر الملفات الثنائية من خلال Google Maven
- تقليل حجم ملفَي
espresso-coreوespresso-webJAR – تم الآن تطبيق ProGuard على التبعيات المضمّنة - تتضمّن جميع ملفات
.aarالآن قواعد ProGuard - إضافة ملفات
proguard_library.cfgإلى العناصر التي تم إصدارها - تتضمّن واجهة
Tapperإصدارًا جديدًا منsendTap()لتنفيذه
المساهمات الخارجية
- Espresso
- Runner
- القواعد
Espresso 2.2.2 وRunner/Rules 0.5 (الإصدار الصامت في 22 فبراير 2016)
الميزات الجديدة
- espresso
- المشكلة 194253: إضافة دعم NavigationView في مكتبة دعم تصميم Android
- تمت إضافة عمليات تحقّق من الحركات وتأثيرات الانتقال المفعّلة
ViewMatcherAPI الجديد:withResourceName()
إصلاح الأخطاء
- espresso
- المشكلة 195331: تضمين ملفات pom الخاصة بمكتبة Guava في espresso-core
- نقل مورد احتساب وقت الخمول خارج espresso-contrib
- القواعد
- المشكلة 187249: خطأ NPE في
Intents.release()
- المشكلة 187249: خطأ NPE في
- runner
- المشكلة 196066: الوسيطة
-e log trueفيAndroidJUnitRunnerلا تتجاوز الاختبار الفعلي - انتظار برنامج تصحيح الأخطاء في
onCreate()من عملية التنفيذ - نقل جميع التعليقات التوضيحية للاختبار المتوافقة من المنصة إلى ATSL
- إزالة تفريغ تتبُّع تسلسل استدعاء الدوال البرمجية بشأن عدم توفّر JSBridge
- ثابت
AndroidAnnotatedBuilder
- المشكلة 196066: الوسيطة
التغييرات البارزة الأخرى
- تم إيقاف الإصدار التجريبي من "
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لإجراءات الفتح والإغلاق
- 157911: إضافة أداة مطابقة العرض لنوع الإدخال في الكائن
إصلاح الأخطاء
- espresso
- تضمن السمة
ViewActions.closeSoftKeyboard()الآن إخفاء لوحة المفاتيح الافتراضية بالكامل - تم إصلاح مشكلة المزامنة مع طريقة
Espresso.pressBack()في Espresso على المستوى 21 من واجهة برمجة التطبيقات والإصدارات الأحدث - تم إصلاح مشكلة المزامنة في الرسوم المتحركة لإغلاق لوحة المفاتيح على المستوى 23 من واجهة برمجة التطبيقات
- تضمن السمة
- القواعد
- تم إصلاح الخطأ
ServiceTestRuleفي المستوى 23 من واجهة برمجة التطبيقات، ويجب دائمًا استدعاءstartService()باستخدامIntentصريح
- تم إصلاح الخطأ
- runner
- إصلاح مشكلة عدم التوافق مع Gradle
JaCoCo - إصلاح مشكلة عدم توفّر ميزة تقسيم الاختبار
- تم إصلاح حالة غير متسقة في أداة تشغيل الاختبار بعد انتهاء المهلة المحدّدة لاختبار الأنماط
JUnit3
- إصلاح مشكلة عدم التوافق مع Gradle
التغييرات البارزة الأخرى
- إصلاحات في 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
إصلاح الأخطاء
- تم إصلاح مشكلة تسريب
DrawerActionsParentListener - يتم الآن التعامل مع تعذُّر استيفاء الافتراض على أنّه اختبار يتم تجاهله بدلاً من اختبار فاشل
- تم إصلاح مشكلة تسريب مثيلات النشاط
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معPreferenceMatcherswithTitle - لم يعُد إلغاء تسجيل مصدر عدم النشاط يؤدي إلى اعتقاد 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()
الميزات الجديدة
- الإجراءات
ViewActionsreplaceText()openLink()- مرِّر سريعًا للأعلى وللأسفل
- espresso-contrib
-
RecyclerViewActions: التعامل مع التفاعلات معRecyclerViews PickerActions: يتعامل مع التفاعلات مع أدوات اختيارDateوTime
-
- عناصر المطابقة
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()withSpinnerText()withHint()isSelected()hasLinks()
-
LayoutMatchers: أدوات مطابقة لاختبار تخطيطات مرتبطة بتعدد اللغات CursorMatchers: مجموعة من أدوات المطابقة لعناصرCursor
- التأكيدات
-
PositionAssertions، بما في ذلكisLeftOf()وisAbove(): مجموعة منViewAssertionsللتحقّق من الموضع النسبي للعناصر على الشاشة -
LayoutAssertions: تأكيدات لاختبار تخطيط ذي صلة بتدويل التطبيق
-
- تطبيق الاختبار: العديد من الأنشطة/الاختبارات التجريبية الجديدة
- غير ذلك
Espresso.unregisterIdlingResources()وEspresso.getIdlingResources(): توفّر مرونة إضافية للعمل معIdlingResourcesViewInteraction.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وswipeRightViewActionsجديدان- دعم النوافذ المتعددة: ميزة متقدّمة تتيح اختيار النافذة المستهدَفة التي يجب أن ينفّذ فيها Espresso العملية
- تحسينات على
TypeTextAction: تتيح كتابة نص في عرض مركّز مسبقًا، ما يسهّل عملية إضافة نص - إصلاحات عديدة للأخطاء
Espresso Contrib Library
- تحتوي هذه المكتبة الجديدة على ميزات تكمّل Espresso، ولكنّها ليست جزءًا من المكتبة الأساسية.
DrawerActionsجديد للعمل علىDrawerLayout: يعتمد على مكتبة Android Support Library، لذا سنبقيه خارج مكتبة Espresso الأساسية
الاختبارات النموذجية
- تم نقل هذه الاختبارات لتكون في الحزمة نفسها التي يتضمّنها تطبيق الاختبار
- تم إصلاح ملفات Maven POM لإزالة التبعيات المكرّرة في Guava، لذا من المفترض أن يعمل
mvn installالآن