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- استخدِم
getInstance().register()بدلاً منregisterIdlingResources()
- استخدِم
- تم الآن نقل Guava إلى مساحة اسم "داخلية" مختلفة باستخدام jarjar. إذا كنت تستخدم واجهة برمجة تطبيقات Guava عن طريق الخطأ من خلال مساحات اسم Espresso، قد تلاحظ حدوث أعطال.
- إزالة أي إشارات إلى Guava المحجوبة (
.core.deps.guava.) - ترقية إصدار مكتبة الدعم إلى 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 ومختبر Firebase الافتراضي.
- توفّر أداة منسّق الاختبارات من Android طريقة جديدة لجمع الاختبارات وتشغيلها، مع التركيز على الدقة والعزل. Orchestrator هي عملية مستقلة لقياس حالة التطبيق، وتنشئ عملية واحدة لتشغيل أداة قياس حالة التطبيق لكل اختبار وتجمع النتائج.
إصلاح الأخطاء
- 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)
-
إصلاح إمكانية استخدام
- القواعد
- تم إصلاح مشكلة
ActivityTestRuleفي مراحل النشاط لتوحيد السلوك في عملية الإعداد العادية والإعداد المؤجّلActivityTestRule - المشكلة 37079943: إصلاح
ServiceTestRuleللسماح بإعادة الربط - المشكلة 37109342: إضافة
getActivityResult()وActivityResultMatchers
- تم إصلاح مشكلة
- UiAutomator
setUiAutomationFlags()للاستخدام معUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES: يتيح ذلك استخدامUiAutomatorأثناء تشغيل خدمات تسهيل الاستخدام الأخرى- المشكلة 37082813:
setText()يؤدي إلى ظهور الخطأNullPointerExceptionإذا كان مستوى واجهة برمجة التطبيقات 19 أو أقلEditText
التغييرات البارزة الأخرى
- يتم الآن نشر الملفات الثنائية من خلال 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: لم يعُد هناك تسريب في
DrawerActionsparentListener - 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)
التغييرات التي قد تؤدي إلى أعطال
- تم تقسيم أداة إنشاء الاختبار إلى قسمَين، وتم تغيير الاسم من
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 (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()
الميزات الجديدة
- الإجراءات
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)
مظهر إسبرسو
swipeLeftوswipeRightViewActionsالجديدان- دعم النوافذ المتعددة: ميزة متقدّمة تتيح اختيار النافذة المستهدَفة التي يجب أن ينفّذ فيها Espresso العملية
- تحسينات على
TypeTextAction: تتيح كتابة نص في عرض مركّز مسبقًا، ما يسهّل عملية إلحاق النص - إصلاحات عديدة للأخطاء
Espresso Contrib Library
- تحتوي هذه المكتبة الجديدة على ميزات تكمّل Espresso، ولكنّها ليست جزءًا من المكتبة الأساسية.
DrawerActionsجديد للعمل علىDrawerLayout: يعتمد على مكتبة دعم Android، لذا سنبقيه خارج مكتبة Espresso الأساسية
الاختبارات النموذجية
- تم نقل هذه الاختبارات لتكون في الحزمة نفسها التي يتضمّنها تطبيق الاختبار
- تم إصلاح ملفات Maven POM لإزالة التبعيات المكرّرة في Guava، لذا من المفترض أن يعمل
mvn installالآن