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 (2018-12-13)
هذا هو الإصدار الثابت من AndroidX Test 1.1.0.
- الأساسية
- جعل سيناريو النشاط يدعم الأنشطة التي تبدأ نشاطًا آخر
AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01، شاشة 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01، Core 1.1.0-beta01 Truth 1.1.0-beta101. J220-beta.1.
- الأساسية
- إضافة عناصر جديدة لإضافة Core-ktx kotlin ويتضمن واجهة برمجة تطبيقات Activityسيناريو.launchActivity المتوافقة مع لغة kotlin
- واجهة برمجة تطبيقات سيناريو النشاط الجديد لإطلاق الأنشطة ذات الأهداف المخصّصة
- واجهة برمجة تطبيقات سيناريو النشاط الجديدة لتلقي نتيجة نشاط
- جعل سيناريو النشاط قابلاً للإغلاق
- الإسبريسو
- التعديل باستخدامResourceNameMatcher وHmanReadables ليكونا متوافقين مع الإصدار 28 من واجهة برمجة التطبيقات
- عدِّل وصف replaceTextAction لتضمين السلسلةToBeSet
- يمكنك إتاحة Espresso في وضع Robolectric المتوقف مؤقتًا بتكرار.
- JUnit
- واجهة برمجة تطبيقات Activityالحالة الجديدة للإطلاق التلقائي وإغلاق صفحة النشاط عند إعداد الاختبار وإنهاء الإجراءات
- عنصر جديد لإضافة junit-ktx kotlin. يشتمل على واجهة برمجة تطبيقات Activityسيناريو تستند إلى لغة البرمجة kotlin
- عدّاء
- جعل الحزمة -e و-e testFile متطابقين في السلوك عند استلام الحزم
- الحقيقة
- إضافة واجهات برمجة تطبيقات bool و parcelableAsType 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 (2018-10-24)
- الكل
- ضبط minSdkVersion على 14 وtargetSdkVersion على 28.
- الإسبريسو
- إصلاح withContentDescription للعمل مع الأنواع التي لا تمثّل سلاسل
- إضافة دعم لاستخدام Espresso على Robolectric
- المشكلة 72798625: لا يعمل Espresso ViewMatchers.withText عند تفعيل textAllCaps
- إضافة دعم لإدخال سلسلة من أحداث الحركة
- الأهداف
- يمكنك إضافة واجهة برمجة تطبيقات تجريبية لاسترداد قائمة الأغراض. مخصَّصة للاستخدام مع تأكيدات صحة جديدة
- عدّاء
- إتاحة التطبيقات الفورية
- أوقِف 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. تمت إضافة علامة orchetratorDebug جديدة لتصحيح أخطاء الأوركسترا نفسه.
- الأساسية
- عنصر جديد! يتضمّن واجهات برمجة تطبيقات جديدة تتيح الاختبارات المحلية والاختبارات على الجهاز فقط لما يلي:
- استرداد السياق: ApplicationProvider
- التحكم في مراحل نشاط النشاط: سيناريو النشاط(إصدار تجريبي)
- أدوات إنشاء MotionEvent وPackageInfo
- فئة الخدمات القابلة للدمج
- عنصر جديد! يتضمّن واجهات برمجة تطبيقات جديدة تتيح الاختبارات المحلية والاختبارات على الجهاز فقط لما يلي:
- الحقيقة
- عنصر جديد! يتضمّن مواضيع حقيقة مخصّصة للإشعارات والهدف والحزمة وParcelable وMotionEvent.
- JUnit
- عنصر جديد! يتضمّن فئة برنامج تشغيل JUnit androidx.test.ext.junit.runners.AndroidJUnit4 التي تتوافق مع الاختبارات المحلية والاختبارات على الجهاز معًا.
Espresso 3.0.2-beta1، Runner 1.0.2-beta1، القواعد 1.0.2-beta1، Monitor 1.0.2-beta1، AndroidTestOrchestrator 1.0.2-beta1 (2018-04-16)
- الإسبريسو
- تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات:
- لقد تم لفت انتباهنا في المشكلة رقم 64062890 بأنّنا نستخدم Guava Optional في واجهة برمجة التطبيقات العامة. كان هذا خطأ مريعًا من جانبنا . ونتيجةً لذلك، تم إجراء تغيير علني في واجهة برمجة التطبيقات في هذا الإصدار لمعالجة هذه المشكلة. لقد قدّمنا برنامج تضمين مزعج حول فئة Guava Optional، يُسمى EspressoOptional، وهو يعمل ضمن مساحة الاسم "android.support.test.espresso.util". يحتاج المطوّرون الذين كانوا يستخدمون واجهة برمجة التطبيقات Guava Optional API إلى تغيير عمليات الاستيراد والمراجع لاستخدام EspressoOptional أثناء التحديث إلى هذا الإصدار الجديد. نعتذر عن أيّ إزعاج قد يسبّبه لك هذا الأمر.
- يتم الآن تمييز واجهات برمجة التطبيقات onView() وonData() بعلامة @CheckReturnValue لمنع الأخطاء
- تم إصلاح ملف espresso-core POM لكي لا يسحب تبعية "القواعد"، وبدلاً من ذلك، يسحبه مدير عمليات الشركاء (POM). ومن المفترض أن يكون هذا تغييرًا بسبب NoOp للمطوّرين، لأنّه لا يمكن استخدام أغراض الإسبريسو بدون إسبريسو كور.
- المشكلة 65486414: تبعية جوافة الإسبريسو مفقودة
- المشكلة 65576174: يتسبب Espresso IdlingResourceRegistry.sync في إخفاق الاختبار الثاني
- المشكلة 65568629: Espresso.onIdle لا تستخدم IdlingRegistry
- المشكلة 69333598: espresso 3.0.1 غير متوافق مع play-services-auth:11.6.0 في وحدة مكتبة Android.
- المشكلة 64062890: نوع اختياري داخلي عرضته واجهة AdapterViewProtocol
- المشكلة 64091847: يجب ألا يعتمد Espresso 3.0.0 على برنامج الاختبار
- المشكلة رقم 73722050: فئات espresso-contrib 3.0.2-alpha1 android.rc.{lifecycle/core}
- تغيير قد يؤدي إلى عطل في واجهة برمجة التطبيقات:
- إصدار Espresso عن بُعد
- هذه أداة جديدة تمامًا. لقد فصلنا كل وظائف Espresso المتعددة العمليات عن تلك التي توفّرها أدوات الإسبريسو الأساسية. إنّ هذا الخيار أنظف ومن المفترض أن يقلّل بشكل كبير من الحجم الإجمالي لقهوة الإسبريسو وعدد طرقها.
- عدّاء
- قطع تتبُّع تسلسل استدعاء الدوال البرمجية إذا كانت كبيرة جدًا بالنسبة إلى معاملة برنامج صنف. بما أنّ تطبيق AJUR يحتاج إلى إرسال تقارير عن الإخفاقات إلى AM عبر تصنيف IPC للحافظ، نحتاج إلى التأكد من أننا لا نتجاوز الحد الأقصى لمعاملات Binder، وهو 1 ميغابايت لكل عملية.
- المشكلة 65828576: تعطُّل TestRequestBuilder عند إجراء اختبار في الصف باستخدام @تجاهل
- المشكلة 37057596: لا نتعامل مع حالات الإخفاق في @beforeClass
- القواعد
- تأكّد من إصدار مرجع عن النشاط قيد الاختبار بعد تغييرات مراحل النشاط. خلال مدة الاختبار، يمكن للمرء الآن معالجة النشاط مباشرةً باستخدام المرجع الذي تم الحصول عليه من #getActivity() إذا تم الانتهاء من النشاط وإعادة تشغيله، فإن المرجع الذي يعرضه #getActivity() يشير دائمًا إلى الحالة الحالية للنشاط.
- المشكلة 64389280: لا يوفّر GrantPermissionالقواعد إمكانية الوصول إلى WRITE_EXTERNAL_STORAGE
- المشكلة 37065965: تسرب الأنشطة ActivityTestRule بعد تغيير الاتجاه
- المشكلة 75254050: لا يحدّث ActivityTestRule مثيل النشاط أثناء تغييرات الضبط
- المشكلة 64464625: يتعذر تشغيل واجهة المستخدم في طريقة end() في النشاط
- 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()
بين استدعاءات الاختبار. ملاحظة: السياق في الأمر الواضح هو التطبيق ضمن سياق الاختبار. - تم حل المشكلة: عند إجراء اختبار فارغ، يُعرف أيضًا بعدم وجود @اختبار داخل الهدف، تكون نتيجة الاختبار مختلفة عن الوضع القديم.
- المشكلة 72758547: تتسبب أوركسترا الاختبار في عدم اكتمال بيانات تغطية Jacoco، ولا تحتوي سوى على بيانات تشغيل الاختبار الأخير
- المشكلة 67916042: منسّق الاختبار على Android : توقف التنفيذ عند تعطُّل العملية بسبب OutOfMemory
- المشكلة 77752735: يتعطل الأوركسترا بسبب transactionToolargeException
- المشكلة 77549481: يجب على أوركسترا الاختبار تشغيل "pm clear" بعد كل اختبار
- عليك اجتياز علامات
Espresso 3.0.2-alpha1، Runner 1.0.2-alpha1، القواعد 1.0.2-alpha1، AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)
الإسبريسو
- تتوفّر لدى
Intents
الآن استجابة قابلة للاستدعاء، ما يسمح بإجراء الاختبارات بعد تسجيل هدف تم تنشيطه ولكن قبل عرض عنصرInstrumentation.ActivityResult
.
- تتوفّر لدى
عدّاء
يمكنك تقسيم عناصر رصد maven
com.android.support.test:monitor:<version>
، للمستخدمين الذين يحتاجون إلىMonitoringInstrumentation
بدون تشغيل الاختبار وميزات JUnit.إذا كنت تستخدم السمة
com.android.support.test:runner:<version>
، ستسير الأمور على النحو المتوقَّع، لأنّ أداة Gradle تعرض تلقائيًا وحدةmonitor
كتبعية للوحدةrunner
.تمت إضافة العلامة
newRunListenerOrderMode
. عند استخدامtrue
، يتم تشغيل أدوات الاستماع التي يحددها المستخدم قبل أدوات معالجة الصوت التلقائية. (نتوقع أن يصبح هذا السلوك في النهاية الإعداد الافتراضي).المشكلة 65828576: يتعطّل
TestRequestBuilder
عند إجراء اختبارات في صف تم التعليق عليه باستخدام@Ignore
(مستقل بدون إجراء اختبار أو ميزات JUnit).
AndroidTestOrchestrator
- والآن، يتم التعامل مع الاختبارات الفارغة بالطريقة نفسها التي يتم بها التعامل مع
AndroidJUnitRunner
غير المنسَّقة. - بإمكان آلة الأوركسترا الآن التعامل مع إخراجات عادية كبيرة جدًا من
"
AndroidJUnitRunner
".
- والآن، يتم التعامل مع الاختبارات الفارغة بالطريقة نفسها التي يتم بها التعامل مع
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (2017-08-28)
الإسبريسو
- تمت إضافة خيار
IdlingPolicy
لإيقافonTimeout()
عند إرفاق برنامج تصحيح أخطاء في الجهاز الافتراضي. - المشاكل 64024656 و64247586 و64525881: لا تُبلغ عن حالات تعذُّر التحميل لفئة غير ناجحة ما لم يحمِّل المستخدم فئات معيّنة من خلال تضمين وسيطة عامل تشغيل الفئة
-e
. - المشكلة 64877246: أضف الفئات المفقودة إلى ملف JAR للمصادر.
- تمت إضافة خيار
عدّاء
- منطق
ShardingFilter
مبسّط - المشكلة 65025743: أصبح الفلتر
@RequiresDevice
متوافقًا الآن مع أدوات محاكاة FTL.
- منطق
AndroidTestOrchestrator
- لا تكرّر حالات تعذُّر التقارير. عندما تتعطل عملية اختبار بعد تعذُّرها، يتم الآن الإبلاغ عن إخفاق واحد فقط للاختبار.
- إصلاح JavaDoc للأوركسترا.
- تتم الآن الإشارة إلى الاختبارات على أنها فائتة في حال تعطُّل العملية عن بُعد.
- تعالج الآن حالات الاختبار التي تم تجاهلها.
- يتم الآن استبعاد حالات الاختبار التي تم تجاهلها من التذييل لمطابقة النتائج القديمة.
- إصلاح مشاكل أذونات وقت التشغيل وتتم كتابة تقارير الاختبار الآن على بطاقة SD على نظام التشغيل Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) والإصدارات الأحدث.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (2017-07-25, Announcement)
تغييرات قد تؤدي إلى أعطال
- جميع العناصر
- سيتم إيقاف دعم مستويات واجهة برمجة التطبيقات الأقل من 15 – ومع ذلك، لا تزال حزمة minSDK تشير إلى المستوى 9 من واجهة برمجة التطبيقات لمنح المستخدمين الوقت الكافي للترقية
- الإسبريسو
- تم حذف الصف
android.support.test.espresso.contrib.CountingIdlingResource
المتوقف نهائيًا ونقله إلىandroid.support.test.espresso.idling.CountingIdlingResource
- استخدم
getInstance().register()
بدلاً منregisterIdlingResources()
- استخدم
- يتم الآن نقل واجهة Guava إلى مساحة اسم "داخلية" مختلفة، وإذا كنت تستخدم عن طريق الخطأ واجهة برمجة التطبيقات Guava من خلال مساحات اسم Espresso، قد تحدث أعطال.
- أزِل أي مراجع للجوافة المظلّلة (
.core.deps.guava.
). - ترقية Support Library إلى 25.4.0 أو إصدار أحدث
- أزِل أي مراجع للجوافة المظلّلة (
- تم حذف الصف
المشاكل المعروفة
- AndroidTestOrchestrator
- وسيطات الشرطين
-e numShards
و-e shardIndex
غير متوافقة حاليًا - الاختبارات التي تتضمّن معلَمات غير متاحة حاليًا
- وسيطات الشرطين
الميزات الجديدة
- الإسبريسو
- إصدار جديد من طريقة إسبريسو متعددة العمليات
للإصدار الجديد من واجهة برمجة التطبيقات 26 لنظامي التشغيل
espresso-core
وespresso-web
، ولكن ليسespresso-contrib
- واجهة برمجة تطبيقات جديدة خفيفة
IdlingRegistry
- تم النشر كجزء من
com.android.support.test.espresso:espresso-idling-resource:3.0.0
- في ما يلي الطرق التي تم إيقافها نهائيًا:
- تم النشر كجزء من
- واجهة برمجة تطبيقات جديدة للمساعدة في المزامنة مع
Executors
- عنصر جديد من الخبراء:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- يحتوي على
IdlingScheduledThreadPoolExecutor
وIdlingThreadPoolExecutor
فئات
- عنصر جديد من الخبراء:
- واجهة برمجة تطبيقات جديدة للمساعدة في المزامنة مع طلبات الشبكة والردود
- عنصر جديد من الخبراء:
com.android.support.test.espresso.idling:idling-net:3.0.0
- يحتوي على
UriIdlingResource
فئة
- عنصر جديد من الخبراء:
- أدوات مطابقة جديدة لمشاهدات
espresso-core
:- يتطابق الرمز
hasBackground()
مع مورد قابل للرسم في خلفية عنصرView
- تتطابق
hasTextColor()
مع لون كائنTextView
- يتطابق الرمز
- طرق جديدة لإجراءات العرض:
- إجراء عرض محسّن
scrollTo()
للعمل مع العناصر التابعة منListView
repeatedlyUntil()
– يتم تنفيذ الإجراء المحددViewAction
في المشاهدة حتى تتطابق طريقة العرض مع القيمة المطلوبةViewMatchers
- إجراء عرض محسّن
- طرق جديدة لإنشاء قهوة الإسبريسو:
pressBackUnconditionally()
– تشبهpressBack()
، لكنّها لا تترك استثناء عند التنقّل بين EspressonoActivity()
– لا حاجة إلى انتظار نشاط قبل تنفيذViewAction
أوViewAssertion
onIdle()
: تعاوَن سلسلة التعليمات الرئيسية إلى أن يصبح التطبيق غير نشِط لفترة قصيرةonIdle(Callable<T>)
– مثلonIdle()
، ولكنها تأخذ مَعلمةCallable
إضافية، يتم تنفيذها بعد أن يصبح التطبيق في وضع عدم النشاط
webScrollIntoView()
– عنصرespresso-web
جديد يتيح لك التنقّل داخلWebView
- إصدار جديد من طريقة إسبريسو متعددة العمليات
للإصدار الجديد من واجهة برمجة التطبيقات 26 لنظامي التشغيل
- عدّاء
-
InterceptingActivityFactory
وSingleActivityFactory
: تتيح إمكانية اختبار نشاط بمعزل عن العالم الخارجي عن طريق تجاوُز طرق مثلstartService()
وsendBroadcast()
. -
إتاحة استخدام JUnitParams مع
AndroidJUnitRunner
-
يمكنك بدء التعامل مع
@UiThreadTest
على مستوى برنامج الاختبار الأساسي وإيقاف@UiThreadTestRule
– يؤدي هذا إلى تفعيل التعليق التوضيحي@UiThreadTest
مباشرةً على الطرق التي تمت إضافة تعليقات توضيحية إليها باستخدام@Before
و@After
-
يتوافق التعليق التوضيحي
@SdkSupress
الآن مع قيمةmaxSdkVersion
(المشكلة 37067792) -
-e classLoader
– توفير إمكانية تمرير محملات الفئة باستخدام وسيطات العداء -
-e filter
– أضِف دعمًا لفلاتر JUnit المخصّصة ليتم تحديدها باستخدام وسيطات برنامج التشغيل. -
-e runnerBuilder
– تسمح لمطوّري البرامج بتقديم عمليات تنفيذRunnerBuilder
الخاصة بهم التي يمكنها تحديد ما إذا كان يمكن عرضها مع فئة معيّنة وكيفية إجراء ذلك.
-
- القواعد
ProviderTestRule
– واجهة برمجة تطبيقات جديدة لاختبار عناصرContentProvider
getActivityResult()
وActivityResultMatchers
– واجهة برمجة تطبيقات جديدة لاسترداد نتيجة النشاط لنشاط يُسمىsetResult()
- AndroidTestOrchestrator
- Android Test Orchestrator
يوفّر طريقة جديدة لجمع الاختبارات وإجرائها، مع التركيز على
التصحيح والعزلة الأوركسترا هي عملية قياس مستقلة،
تنتج عملية ركض واحدة لكل اختبار وتجمع النتائج.
- تؤدي أعطال التطبيق إلى إزالة أدوات الركض وليست الأوركسترا، مما يسمح لمجموعة الاختبار بمواصلة
- تتطلب هذه الميزة تثبيت حزمة APK الأوركسترا:
'com.android.support.test:orchestrator:1.0.0'
- يتضمّن الإصدار 1.0 واجهة سطر أوامر فقط، وقد تم التخطيط للدمج مع "استوديو Android" و"ميزات Firebase الاختبارية"
- Android Test Orchestrator
يوفّر طريقة جديدة لجمع الاختبارات وإجرائها، مع التركيز على
التصحيح والعزلة الأوركسترا هي عملية قياس مستقلة،
تنتج عملية ركض واحدة لكل اختبار وتجمع النتائج.
إصلاح الأخطاء
- الإسبريسو
- تحسين مزامنة عرض الجذر لتقليل الاهتزاز بشكل كبير
- إصلاح تلف
IdlingResourceRegistry
- مزامنة أفضل مع عناصر
IdlingResource
- المشكلة 37132680: لا ينتظر Espresso حتى اكتمال إنشاء مربع الحوار قبل تنفيذ الإجراء التالي
- المشكلة 37103280: يجب أن تشحن قهوة الإسبريسو قواعد ProGuard الخاصة بالمستهلكين حتى لا يُطلب من المستهلكين إضافتها
- المشكلة 37094726: تحتوي Espresso Intents على تصنيف تطبيقات غير ضروري
- المشكلة 37093953: الإسبريسو: لا يتوفر التحقق من نص خطأ فارغ/فارغ
- المشكلة 37071776: يضمِّن
espresso-core
ملفات جوافا (.pom
) - المشكلة 37062612: NPE في
release()
- المشكلة 37063389: لا يؤدي استخدام Guava و
espresso-web
إلى تجميع تبعياتandroidTest
- المشكلة 37070533: إضافة دعم لـ
NavigationView
في Android Design Support Library
- عدّاء
-
إصلاح إمكانية استخدام
@UiThreadTest
مع@Test(timeout = 123)
- تم إصلاح وسيطة ركض
-e notClass
. - تم إصلاح أخطاء
-e log
لإتاحة مجموعات الاختبار JUnit3 وJUnit4، بالإضافة إلى أجهزة الركضParameterized
وEnclosed
. - المشكلة 37663530: انتظار انتهاء جميع الأنشطة قبل وبعد كل طريقة اختبار
- المشكلة 37132680: لا ينتظر Espresso حتى اكتمال إنشاء مربع الحوار قبل تنفيذ الإجراء التالي
-
المشكلة 37123213:
تم تجاهل
@RequiresDevice
على x86_64 ABI -
المشكلة 37101485: يتم تجاهل بعض الوسيطات المقدّمة في البيان من أجل
AndroidJUnitRunner
، مثل حجم الاختبار والتعليق التوضيحي وتصحيح الأخطاء، - المشكلة 37082857: فشل تنفيذ اختبار شبه متوازي الإسبريسو على الكائنات الثابتة
-
المشكلة 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-web
JAR، وتم الآن تطبيق ProGuard للتبعيات المضمنة - تتضمن جميع ملفات
.aar
الآن قواعد ProGuard - إضافة
proguard_library.cfg
ملف إلى العناصر التي تم إصدارها - تحتوي واجهة
Tapper
على إصدار جديد منsendTap()
لتنفيذ
المساهمات الخارجية
- الإسبريسو
- عدّاء
- القواعد
Espresso 2.2.2, Runner/Rules 0.5 (2016-02-22، إصدار صامت)
الميزات الجديدة
- إسبريسو
- المشكلة 194253: إضافة الدعم لـ NavigationView في مكتبة تصميم دعم Android
- تمت إضافة عمليات تحقُّق للصور المتحركة والانتقالات المفعّلة.
- واجهة برمجة تطبيقات
ViewMatcher
الجديدة:withResourceName()
إصلاح الأخطاء
- إسبريسو
- المشكلة 195331: ملفات espressocore تتضمن ملفات pom
- تم نقل مصدر عدم النشاط لفترة قصيرة من وجهة نظر الإسبريسو.
- القواعد
- المشكلة 187249: NPE في
Intents.release()
- المشكلة 187249: NPE في
- عدّاء
- المشكلة 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
- تمت إضافة دالة إنشاء
- عدّاء
- تمت إضافة تثبيت حالات خاصة متعددة الاستخدامات للمستويات 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
- إجراء جميع الاختبارات باستثناء تلك ضِمن فئة معيّنة:
المساهمات الخارجية
- إسبريسو
- 157911: إضافة مطابقة طريقة العرض لنوع الإدخال في كائن
EditText
- 157912: إضافة طريقة مطابقة طرق العرض لمطابقة نص الخطأ على عنصر
EditText
- 150674: إضافة دعامة
DrawerActions
للأدراج ذات الجاذبية العشوائية - 150744: لم يعُد يتم تسريب
DrawerActions
parentListener
- 153303: الجاذبية المحدّدة في علامة "هل الدرج مفتوح أم مغلق"؟
- 157910: إضافة
DrawerLayout
مصانع إجراءات مفتوحة ومغلقة
- 157911: إضافة مطابقة طريقة العرض لنوع الإدخال في كائن
إصلاح الأخطاء
- إسبريسو
- يضمن
ViewActions.closeSoftKeyboard()
الآن عدم استخدام لوحة المفاتيح اللينة تمامًا - تم إصلاح مشكلة المزامنة في طريقة
Espresso.pressBack()
في Espresso على المستوى 21 من واجهة برمجة التطبيقات والإصدارات الأحدث - مزامنة ثابتة للصور المتحركة لإغلاق لوحة المفاتيح على المستوى 23 من واجهة برمجة التطبيقات
- يضمن
- القواعد
- تم إصلاح
ServiceTestRule
على المستوى 23 من واجهة برمجة التطبيقات، ويجب استدعاءstartService()
دائمًا باستخدامIntent
فاضحة
- تم إصلاح
- عدّاء
- تم إصلاح دعم الصف
JaCoCo
المعطّل - تم إصلاح دعم تقسيم الاختبار إلى أجزاء
- تم إصلاح الحالة غير المتسقة في مشغّل الاختبار بعد انتهاء مهلة الاختبار لنمط
JUnit3
- تم إصلاح دعم الصف
التغييرات البارزة الأخرى
- إصلاحات Javadoc وتحسينات على رسائل الخطأ
- تجاهل طرق
suite()
ولا تتجاهل أخطاء init عند استخدام فلاتر الطرق
Espresso 2.2 / ATSL 0.3 (2015-06-09)
الميزات الجديدة
- espresso-web 2.2
- دعم جديد من
WebView
- دعم جديد من
- espresso-core 2.2
- تم نقل البيانات لاستخدام الإصدار 2 من الخناجر
- تم نقل البيانات لاستخدام الإصدار 1.3 من Hamcrest
- espresso-contrib 2.2
- عمليات التحقّق من إمكانية الوصول
- دعم الجاذبية
DrawerActions
- القاعدة 0.3
- قاعدة واحدة (
DisableOnAndroidDebug
)
- قاعدة واحدة (
- دالة Runner 0.3
- الترقية من JUnit v4.10 إلى JUnit v4.12
- تم نقل البيانات لاستخدام الإصدار 1.3 من Hamcrest
إصلاح الأخطاء
- تم إصلاح مشكلة تسرّب
ParentListener
منDrawerActions
- يتم التعامل مع خطأ الافتراض الآن على أنّه اختبار تجاهل بدلاً من اختبار فاشل
- تم إصلاح حالات تسريب بيانات
MonitoringInstrumentation
خلالExecutorService
- إصلاح للأنشطة اليتيمة التي تكون عالقة في المرحلة المتوقفة
- عدِّل
Until.scrollFinished()
لعرض القيمة "صحيح" إذا لم يتم إنشاء أحداث التمرير. الحماية من NPE المحتمل فيUiObject2#setText()
.
Espresso 2.1، وTest Runner/Rules 0.2، وUIAutomator 2.1.0 (2015-04-21)
تغييرات قد تؤدي إلى أعطال
- تم تقسيم العناصر في لعبة الركض إلى قسمَين وتم تغيير الاسم من
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 في اختبارات واجهة المستخدم الوظيفية
- إسبريسو كور
ViewActions
: تمت إضافة إمكانية تنفيذ تأكيدات عامة قبل تنفيذ الإجراءات. ويفيد ذلك في أُطر العمل الأخرى التي تعتمد على Espresso للتحقق من حالة العرض الهرمي لطريقة العرض أثناء تنفيذ مجموعة اختبار Espresso الحالية- حِمل زائد
ViewMatchers.withContentDescription()
resId
- القواعد
ActivityTestRule
: توفر هذه القاعدة اختبارًا وظيفيًا لنشاط واحد- تعليقات
UiThreadRule
وUiThreadTest
التوضيحية: تسمح هذه القاعدة بطريقة الاختبار التي تمت إضافة تعليقات توضيحية إليها باستخدامUiThreadTest
والتي يتم تنفيذها على سلسلة التعليمات الرئيسية للتطبيق (أو سلسلة محادثات واجهة المستخدم). ServiceTestRule
: توفر هذه القاعدة اختبارًا وظيفيًا لإحدى الخدمات.
- عدّاء
ApplicationLifecycleCallback
: معاودة الاتصال لمراقبة أحداث مراحل نشاط التطبيق- يمكن الآن أيضًا تحديد كل وسيطات برنامج التشغيل في ملف بيان Android
باستخدام علامة
<meta-data>
- UIAutomator
- بإمكان "
UiDevice.dumpWindowHierarchy()
" الآن قبولFile
أوOutputStream
.
- بإمكان "
إصلاح الأخطاء
- إسبريسو
- تعرض أداة مطابقة المؤشر الآن
false
إذا لم يتم العثور على العمود، حتى يتمكن Hamcrest من المتابعة إلى المؤشر التالي - لم يعد يتم تنفيذ
NullPointerException
معPreferenceMatchers
withTitle
- إلغاء تسجيل مورد عدم النشاط لم يعد يجعل Espresso يعتقد أن لدينا موارد مشغولة
- إصدار محدّث من التعليقات التوضيحية للدعم المُستخدَم من قِبل Espresso Contrib
- تعرض أداة مطابقة المؤشر الآن
- عدّاء
- يتخطّى "
AndroidJUnit4
" الآن الاختبارات التي تتضمّن افتراضات غير ناجحة
- يتخطّى "
- UIAutomator
- ضبط إعدادات "المراقبون" لمنع "
StaleObjectException
"
- ضبط إعدادات "المراقبون" لمنع "
التغييرات البارزة الأخرى
- يمكنك إضافة رسالة خطأ أفضل عندما لا يمكننا كتابة نص بسلسلة غير لاتينية.
UIAutomator 2.0 (2015-03-12)
يعتمد UI Automator الآن على أدوات Android، ويمكنك إنشاء اختبارات وتنفيذها
باستخدام الأمر ./gradlew connectedCheck
.
Espresso الإصدار 2.0، Test Runner 0.1 (تاريخ الإصدار: 19-12-2014)
تغييرات قد تؤدي إلى أعطال
- تم نقل Espresso إلى مساحة اسم جديدة، من
android.support.test.espresso
إلىandroid.support.test.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
(كما يجب أن يكون دائمًا)
- تغيّر اسم
- تمت إزالة اختياري (تبعية جوافة) من واجهة برمجة التطبيقات العامة
لدعم إعادة تجميع تبعية الجوافة وتجنب تضارب DEX (مصدر
رئيسي لمشكلات التطوير). وتشمل الطرق المتأثّرة ما يلي:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
الميزات الجديدة
- الإجراءات
ViewActions
replaceText()
openLink()
- التمرير سريعًا للأعلى وللأسفل
- إسبريسو
RecyclerViewActions
: التعامل مع التفاعلات باستخدامRecyclerViews
PickerActions
: معالجة التفاعلات مع منتقيDate
وTime
- المطابقات
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: أدوات المطابقة لاختبار التخطيط المرتبط بـ i18nCursorMatchers
: مجموعة من المُطابقات لكائناتCursor
- التأكيدات
PositionAssertions
، بما في ذلكisLeftOf()
وisAbove()
: مجموعة منViewAssertions
للتحقق من الموضع النسبي للعناصر على الشاشةLayoutAssertions
: تأكيدات لاختبار التصميم المرتبط بـ i18n
- تطبيق تجريبي: العديد من نماذج الأنشطة/الاختبارات الجديدة
- غير ذلك
Espresso.unregisterIdlingResources()
وEspresso.getIdlingResources()
: توفير المزيد من المرونة للعمل باستخدامIdlingResources
ViewInteraction.withFailureHandler()
: يسمح هذا الخيار بتجاوز معالج الفشل منonView()
.- دعم
onData()
لـAdapterViews
بدعم منCursorAdapters
إصلاح الأخطاء
- يتطابق
ViewMatchers.isDisplayed()
مع المشاهدات التي تشغل مساحة الشاشة بأكملها، ولكنها لا تقل عن 90% - لم يعد إجراء الاتصال عبر التمرير السريع على
DrawerActions.openDrawer()
يؤدي إلى ظهور فيIdlingResourceTimeoutException
التغييرات البارزة الأخرى
- تم التبديل من البناء باستخدام Maven إلى Gradle.
- نقل تبعيات الإسبريسو (Guava وDagger وHamcrest) إلى مكانها لتجنُّب تصادمات "DEX"
- التغيير إلى عرض حالة النجاح أو الفشل عند التسجيل وإلغاء تسجيل الموارد غير النشطة
- دعم Lollipop: ضع
message.recycle()
خلف واجهة لحساب التغييرات المتعلقة بالإصدار - تم تبديل مستوى حزمة تطوير البرامج (SDK) المستهدَف إلى 21، يؤثّر ذلك بشكل كبير في التطبيق التجريبي.
الإصدار 1.1 (تاريخ الإصدار: 2014-01-08)
اسبريسو
swipeLeft
وswipeRight
ViewActions
جديدان- إتاحة النوافذ المتعددة: هي ميزة متقدّمة تتيح إمكانية اختيار النافذة المستهدَفة التي يجب أن يتم تشغيل Espresso من خلالها.
- تحسينات على
TypeTextAction
: تسمح هذه السياسة بكتابة النص في طريقة عرض مركّزة مسبقًا، ما يسهّل إلحاق نص. - إصلاحات متعددة للأخطاء
مكتبة Espresso Contrib
- تحتوي هذه المكتبة الجديدة على ميزات مكمّلة لخيار Espresso، ولكنّها ليست جزءًا من المكتبة الأساسية.
DrawerActions
جديدة للتشغيل فيDrawerLayout
: تعتمد هذه الميزة على مكتبة دعم Android، وبالتالي نحن نحتفظ بها خارج مكتبة Espresso الأساسية.
نماذج الاختبارات
- تم نقل هذه الاختبارات إلى مكانها المباشر في الحزمة نفسها مثل التطبيق التجريبي.
- تم إصلاح مدراء عمليات الشركاء من أجل إزالة طبقات الجوافة المكررة، لذا من المفترض
أن تعمل علامة
mvn install
الآن.