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، 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 (2018-12-06)
- هسته
- مصنوع جدید افزونه کاتلین core-ktx! شامل یک API ActivityScenario.launchActivity سازگار با کاتلین است.
- API جدید ActivityScenario برای راهاندازی فعالیتها با اهداف سفارشی
- API جدید ActivityScenario برای دریافت نتیجه یک فعالیت
- سناریوی فعالیت را قابل بستن کنید
- اسپرسو
- withResourceNameMatcher و HumanReadables را طوری تغییر دهید که با API 28 سازگار باشند.
- توضیحات ReplaceTextAction را بهروزرسانی کنید تا stringToBeSet را نیز شامل شود.
- پشتیبانی از Espresso در حالت looper متوقف شده Robolectric.
- جییونیت
- API جدید ActivityScenarioRule، برای راهاندازی و بستن خودکار یک فعالیت در هنگام راهاندازی آزمایشی و تجزیه و تحلیل
- افزونه جدید junit-ktx kotlin! شامل یک API ActivityScenarioRule سازگار با کاتلین
- دونده
- ایجاد ثبات در رفتار -e package و -e testFile هنگام دریافت بستهها
- حقیقت
- APIهای bool، parcelable و 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 را روی ۱۴ و مقدار targetSdkVersion را روی ۲۸ تنظیم کنید.
- اسپرسو
- رفع مشکل withContentDescription برای کار با انواع غیر رشتهای
- اضافه شدن پشتیبانی برای استفاده از Espresso در Robolectric
- مشکل ۷۲۷۹۸۶۲۵ : 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
- فقط در صورتی که هر دو آرگومان «پوشش» و «پوششفایلپث» ارسال شده باشند، مدیریت پوشش هماهنگکننده را فعال کنید.
- فقط زمانی که -debug تنظیم شده باشد، منتظر اشکالزدا باشید، اما نه برای فهرست کردن موارد تست ATO. یک پرچم جدید orchestratorDebug برای اشکالزدایی خود orchestrator اضافه شد.
- هسته
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- بازیابی زمینه: ApplicationProvider
- کنترل چرخه حیات فعالیت: سناریوی فعالیت (بتا)
- سازندگان MotionEvent، PackageInfo
- کلاس کاربردی Parceables
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- حقیقت
- مصنوع جدید! شامل موضوعات حقیقت سفارشی برای اعلان، قصد، بسته، بستهبندی و MotionEvent است
- جییونیت
- مصنوع جدید! شامل کلاس اجراکننده JUnit به نام androidx.test.ext.junit.runners.AndroidJUnit4 است که از تستهای محلی و روی دستگاه پشتیبانی میکند.
اسپرسو ۳.۰.۲-بتا۱، رانر ۱.۰.۲-بتا۱، رولها ۱.۰.۲-بتا۱، مانیتور ۱.۰.۲-بتا۱، اندرویدتِستارچستریتور ۱.۰.۲-بتا۱ (۲۰۱۸-۰۴-۱۶)
- اسپرسو
- تغییر API در حال رخ دادن:
- در شماره ۶۴۰۶۲۸۹۰ به ما اطلاع داده شد که ما در API عمومی خود از Guava Optional استفاده میکردیم. این یک اشتباه فاحش از جانب ما بود. در نتیجه، در این نسخه یک تغییر API عمومی مهم برای رفع این مشکل ایجاد شده است. ما یک پوشش زشت پیرامون کلاس Guava Optional به نام EspressoOptional معرفی کردیم که تحت فضای نام "android.support.test.espresso.util" قرار دارد. توسعهدهندگانی که از API افشا شده Guava Optional استفاده میکردند، باید در طول بهروزرسانی به این نسخه جدید، importها و ارجاعات خود را برای استفاده از EspressoOptional تغییر دهند. بابت ناراحتی که ممکن است ایجاد شود، عذرخواهی میکنیم.
- APIهای onView() و onData() اکنون برای جلوگیری از خطا با @CheckReturnValue علامتگذاری شدهاند.
- فایل POM espresso-core را طوری اصلاح کردیم که وابستگی "rules" را دریافت نکند، در عوض POM espresso-intents آن را دریافت کند. این باید یک تغییر NoOp برای توسعهدهندگان باشد زیرا espresso-intents بدون espresso-core قابل استفاده نیست.
- شماره 65486414 : اسپرسو بدون وابستگی به گواوا
- مشکل ۶۵۵۷۶۱۷۴ : Espresso IdlingResourceRegistry.sync باعث عدم موفقیت در تست دوم میشود
- مشکل ۶۵۵۶۸۶۲۹ : Espresso.onIdle از IdlingRegistry استفاده نمیکند
- مشکل ۶۹۳۳۳۵۹۸ : espresso 3.0.1 با play-services-auth:11.6.0 در ماژول کتابخانه اندروید سازگار نیست.
- شماره 64062890 : نوع اختیاری داخلی که توسط رابط AdapterViewProtocol نمایش داده میشود
- شماره ۶۴۰۹۱۸۴۷ : اسپرسو ۳.۰.۰ نباید به اجراکننده تست وابسته باشد
- شماره ۷۳۷۲۲۰۵۰ : بستههای espresso-contrib 3.0.2-alpha1 کلاسهای android.arch.{lifecycle/core}
- تغییر API در حال رخ دادن:
- اسپرسو-کنترل از راه دور
- این یک محصول کاملاً جدید است. ما تمام قابلیتهای چند فرآیندی اسپرسو را به جز محصول اسپرسو-کور از هم جدا کردیم. این روش تمیزتر است و باید اندازه کلی و تعداد متدهای اسپرسو-کور را به میزان قابل توجهی کاهش دهد.
- دونده
- اگر حجم تراکنشهای binder خیلی زیاد است، مسیر پشته را کوتاه کنید. از آنجایی که AJUR باید خرابیها را از طریق IPC binder به AM گزارش دهد، باید مطمئن شویم که از محدودیت تراکنشهای Binder - که ۱ مگابایت برای هر فرآیند است - تجاوز نمیکنیم.
- مشکل ۶۵۸۲۸۵۷۶ : خطای TestRequestBuilder هنگام اجرای تست در کلاس با @Ignore
- شماره ۳۷۰۵۷۵۹۶ : ما در @BeforeClass خطاها را مدیریت نمیکنیم
- قوانین
- اطمینان حاصل کنید که پس از تغییرات چرخه حیات، یک ارجاع به فعالیت تحت آزمایش منتشر میشود. اکنون در طول مدت آزمایش، میتوان فعالیت را مستقیماً با استفاده از ارجاع به دست آمده از #getActivity() دستکاری کرد. اگر فعالیت تمام و دوباره راهاندازی شود، ارجاعی که توسط #getActivity() برگردانده میشود، اکنون همیشه به نمونه فعلی فعالیت اشاره میکند.
- مشکل ۶۴۳۸۹۲۸۰ : GrantPermissionRule قابلیت WRITE_EXTERNAL_STORAGE را ارائه نمیدهد.
- شماره ۳۷۰۶۵۹۶۵ : ActivityTestRule پس از تغییر جهتگیری، فعالیت را نشت میدهد
- مشکل 75254050 : ActivityTestRule در حین تغییرات پیکربندی، نمونه Activity را بهروزرسانی نمیکند.
- مشکل ۶۴۴۶۴۶۲۵ : نمیتوان کار رابط کاربری را در متد finish() از Activity انجام داد
- AndroidTestOrchestrator
- برای تولید فایلهای پوشش در مکان مشخص شده، از پرچمهای
-e coverage true -e coverageFilePath /sdcard/foo/ استفاده کنید (برنامه باید مجوز نوشتن در مکان مشخص شده را داشته باشد). قرارداد نامگذاری فایل پوشش اکنون به صورتcom.foo.Class#method1.ec است. توجه داشته باشید که این فقط در حالت ایزوله پشتیبانی میشود. همچنین، نمیتوان آن را همراه با پرچمcoverageFileدر AndroidJUnitRunner استفاده کرد. از آنجا که فایلهای پوشش تولید شده یکدیگر را بازنویسی میکنند. - اگر میخواهید ارکستراتور دستورات
pm clear context.getPackageName()وpm clear targetContext.getPackageName()را بین فراخوانیهای آزمایشی اجرا کند، پرچم-e clearPackageDataرا وارد کنید. توجه داشته باشید که context در دستور clear، App تحت context آزمایشی است. - رفع شد - هنگام اجرای یک تست خالی، یعنی بدون @Test در داخل هدف، نتیجه تست با حالت قدیمی متفاوت است.
- شماره ۷۲۷۵۸۵۴۷ : Test Orchestrator باعث میشود دادههای پوشش Jacoco ناقص باشند، فقط دادههای آخرین اجرای آزمایش را دارد
- شماره ۶۷۹۱۶۰۴۲ : هماهنگکننده تست اندروید: اجرا به دلیل خرابی فرآیند به دلیل OutOfMemory متوقف شد
- مشکل شماره ۷۷۷۵۲۷۳۵ : خطای TransactionTooLargeException در Orchestrator
- مشکل ۷۷۵۴۹۴۸۱ : Test Orchestrator باید بعد از هر تست "pm clear" را اجرا کند.
- برای تولید فایلهای پوشش در مکان مشخص شده، از پرچمهای
اسپرسو ۳.۰.۲-alpha1، دونده ۱.۰.۲-alpha1، قوانین ۱.۰.۲-alpha1، AndroidTestOrchestrator ۱.۰.۲-alpha1 (۲۰۱۷-۱۲-۰۵)
اسپرسو
-
Intentsاکنون یک پاسخ قابل فراخوانی دارند که به تستها اجازه میدهد پس از دریافت یک intent فعالشده اما قبل از بازگرداندن شیءInstrumentation.ActivityResult، اجرا شوند.
-
دونده
برای کاربرانی که
MonitoringInstrumentationبدون اجرای تست و ویژگیهای JUnit نیاز دارند، از دستور monitor maven artifactcom.android.support.test:monitor:<version>استفاده کنید.اگر
com.android.support.test:runner:<version>استفاده کنید، همه چیز طبق انتظار پیش میرود، زیرا Gradle به طور خودکار ماژولmonitorرا به عنوان یک وابستگی از ماژولrunnerدریافت میکند.پرچم
newRunListenerOrderModeاضافه شد. وقتیtrue، شنوندههای تعریفشده توسط کاربر قبل از شنوندههای پیشفرض اجرا میشوند. (ما انتظار داریم که این رفتار در نهایت به حالت پیشفرض تبدیل شود.)مشکل ۶۵۸۲۸۵۷۶ :
TestRequestBuilderهنگام اجرای تستها در کلاسی که با@Ignoreحاشیهنویسی شده است (به صورت مستقل و بدون اجرای تست یا ویژگیهای JUnit) از کار میافتد.
AndroidTestOrchestrator
- اکنون تستهای خالی را به همان روشی که
AndroidJUnitRunnerغیر هماهنگ انجام میدهد، مدیریت میکند. - Orchestrator اکنون میتواند خروجی استاندارد بسیار بزرگی را از
AndroidJUnitRunnerمدیریت کند.
- اکنون تستهای خالی را به همان روشی که
اسپرسو ۳.۰.۱، دونده ۱.۰.۱، قوانین ۱.۰.۱، AndroidTestOrchestrator ۱.۰.۱ (۲۰۱۷-۰۸-۲۸)
اسپرسو
- گزینهای
IdlingPolicyاضافه شده است تا در صورت اتصال یک اشکالزدای مرحلهای به ماشین مجازی، ازonTimeout()جلوگیری شود. - مشکلات 64024656 ، 64247586 و 64525881 : در صورت عدم موفقیت در بارگذاری کلاس، گزارش خرابی ارسال نکنید، مگر اینکه کاربر با وارد کردن آرگومان
-eclass runner در حال بارگذاری کلاسهای خاص باشد. - مشکل ۶۴۸۷۷۲۴۶ : کلاسهای از دست رفته را به فایل JAR منبع اضافه کنید.
- گزینهای
دونده
- منطق سادهشدهی
ShardingFilter. - مشکل ۶۵۰۲۵۷۴۳ : فیلتر
@RequiresDeviceاکنون از شبیهسازهای FTL پشتیبانی میکند.
- منطق سادهشدهی
AndroidTestOrchestrator
- گزارش خرابیها را تکرار نکنید. وقتی یک فرآیند تست پس از خرابی از کار میافتد، اکنون فقط یک خرابی برای تست گزارش میشود.
- Javadoc برای Orchestrator اصلاح شد.
- اکنون در صورت خرابی فرآیند از راه دور، آزمایشها از دست رفته نشان داده میشوند.
- اکنون موارد آزمایشی نادیده گرفته شده را مدیریت میکند.
- اکنون موارد تست نادیده گرفته شده را از پاورقی حذف میکند تا با نتایج قدیمی مطابقت داشته باشد.
- مشکلات مربوط به مجوزهای زمان اجرا برطرف شد. گزارشهای تست اکنون در اندروید ۷.۰ (سطح API ۲۴) و بالاتر روی کارت SD نوشته میشوند.
اسپرسو ۳.۰.۰، رانر ۱.۰.۰، رولها ۱.۰.۰، اندرویدتِستارکستریتور ۱.۰.۰ (۲۵ ژوئیه ۲۰۱۷، اطلاعیه )
شکستن تغییرات
- همه آثار باستانی
- قطع پشتیبانی از سطوح API پایینتر از ۱۵ - با این حال، حداقل SDK هنوز به API سطح ۹ اشاره میکند تا به کاربران زمان برای ارتقا بدهد.
- اسپرسو
- کلاس منسوخشدهی
android.support.test.espresso.contrib.CountingIdlingResourceحذف و بهandroid.support.test.espresso.idling.CountingIdlingResourceمنتقل شده است.- به جای
registerIdlingResources()ازgetInstance().register()استفاده کنید.
- به جای
- Guava اکنون به یک فضای نام "داخلی" متفاوت منتقل شده است - اگر به طور تصادفی از API Guava از طریق فضاهای نام Espresso استفاده کنید، ممکن است با مشکلاتی مواجه شوید
- هرگونه ارجاع به Guava سایهدار (
.core.deps.guava.) را حذف کنید. - نسخه کتابخانه پشتیبانی خود را به ۲۵.۴.۰ یا بالاتر ارتقا دهید
- هرگونه ارجاع به Guava سایهدار (
- کلاس منسوخشدهی
مشکلات شناخته شده
- AndroidTestOrchestrator
- آرگومانهای اجراکنندهی
-e numShards و-e shardIndex در حال حاضر پشتیبانی نمیشوند. - تستهای پارامتری در حال حاضر پشتیبانی نمیشوند
- آرگومانهای اجراکنندهی
ویژگیهای جدید
- اسپرسو
- پشتیبانی جدید چندپردازشی اسپرسو در API 26 برای
espresso-coreوespresso-web، اما نه برایespresso-contrib - API جدید و سبک
IdlingRegistry- منتشر شده به عنوان بخشی از
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - روشهای منسوخشده:
- منتشر شده به عنوان بخشی از
- API جدید برای کمک به همگامسازی در برابر
Executors- مصنوع جدید Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - شامل کلاسهای
IdlingScheduledThreadPoolExecutorوIdlingThreadPoolExecutorاست
- مصنوع جدید Maven:
- API جدید برای کمک به همگامسازی درخواستها و پاسخهای شبکه.
- مصنوع جدید Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0 - شامل کلاس
UriIdlingResourceاست
- مصنوع جدید Maven:
- تطبیقدهندههای جدید نمای
espresso-core:- تابع
hasBackground()با منبع قابل ترسیم پسزمینهی یک شیءViewمطابقت دارد. - تابع
hasTextColor()رنگ یک شیءTextViewرا مطابقت میدهد.
- تابع
- متدهای جدید اکشن view:
- اکشن پیشرفتهی
scrollTo()برای نمایش ویو جهت کار با فرزندانListView -
repeatedlyUntil()- تابعViewActionداده شده را روی یک نما اجرا میکند تا زمانی که نما باViewMatchersمورد نظر مطابقت داشته باشد.
- اکشن پیشرفتهی
- روشهای جدید اسپرسو:
-
pressBackUnconditionally()– مشابهpressBack()است، اما هنگام پیمایش اسپرسو، استثنا ایجاد نمیکند. -
noActivity()- نیاز به انتظار برای یک فعالیت قبل از انجامViewActionیاViewAssertionرا از بین میبرد. -
onIdle()- نخ اصلی را تا زمانی که برنامه به حالت بیحرکت (idle) برود، حلقه میکند. -
onIdle(Callable<T>)– همانندonIdle()است، اما یکCallableاضافی به عنوان پارامتر میگیرد که پس از غیرفعال شدن برنامه اجرا میشود.
-
-
webScrollIntoView()- اتم جدیدespresso-webکه به شما امکان میدهد درون یکWebViewپیمایش کنید
- پشتیبانی جدید چندپردازشی اسپرسو در API 26 برای
- دونده
-
InterceptingActivityFactoryوSingleActivityFactory- با بازنویسی متدهایی مانندstartService()وsendBroadcast()امکان آزمایش یک فعالیت را به صورت جداگانه از دنیای بیرونی فراهم میکند. - پشتیبانی از استفاده از JUnitParams با
AndroidJUnitRunnerرا اضافه کنید - شروع مدیریت
@UiThreadTestدر سطح اجراکننده تست اصلی و منسوخ کردن@UiThreadTestRule- این کار امکان استفاده از حاشیهنویسی@UiThreadTestرا مستقیماً روی متدهای حاشیهنویسی شده با@Beforeو@Afterفراهم میکند. - حاشیهنویسی
@SdkSupressاکنون از مقدارmaxSdkVersionپشتیبانی میکند (شماره 37067792 ) -
-e classLoader– امکان ارسال class loaderها با استفاده از آرگومانهای runner را فراهم میکند. -
-e filter- پشتیبانی از فیلترهای JUnit سفارشی را که با استفاده از آرگومانهای runner مشخص میشوند، اضافه میکند. -
-e runnerBuilder– به توسعهدهندگان اجازه میدهد پیادهسازیهای خودشان ازRunnerBuilderرا ارائه دهند که میتواند تعیین کند که آیا و چگونه میتوانند در برابر یک کلاس خاص اجرا شوند.
-
- قوانین
-
ProviderTestRule- API جدید برای آزمایش اشیاءContentProvider -
getActivityResult()وActivityResultMatchers- API جدید برای بازیابی نتیجه فعالیتی کهsetResult()را فراخوانی کرده است.
-
- AndroidTestOrchestrator
- Orchestrator تست اندروید، روشی جدید برای جمعآوری و اجرای تستها، با تأکید بر صحت و جداسازی، ارائه میدهد. Orchestrator یک فرآیند Instrumentation مستقل است که برای هر تست، یک فرآیند Instrumentation runner ایجاد کرده و نتایج را جمعآوری میکند.
- خرابیهای برنامه، ابزار دقیق runner را از کار میاندازد اما orchestrator را از کار نمیاندازد و به مجموعه تست شما اجازه میدهد تا ادامه یابد.
- نیاز به نصب APK ارکستراتور دارد -
'com.android.support.test:orchestrator:1.0.0' - نسخه ۱.۰ فقط رابط خط فرمان دارد؛ ادغام با اندروید استودیو و آزمایشگاههای تست فایربیس برنامهریزی شده است
- Orchestrator تست اندروید، روشی جدید برای جمعآوری و اجرای تستها، با تأکید بر صحت و جداسازی، ارائه میدهد. Orchestrator یک فرآیند Instrumentation مستقل است که برای هر تست، یک فرآیند Instrumentation runner ایجاد کرده و نتایج را جمعآوری میکند.
رفع اشکالات
- اسپرسو
- بهبود همگامسازی نمای ریشه برای کاهش قابل توجه پوسته پوسته شدن
- رفع مشکل خرابی
IdlingResourceRegistry - هماهنگسازی بهتر در برابر اشیاء
IdlingResource - شماره ۳۷۱۳۲۶۸ : اسپرسو قبل از انجام اقدام بعدی منتظر تکمیل ایجاد کادر محاورهای نمیماند
- شماره ۳۷۱۰۳۲۸۰ : اسپرسو باید قوانین مصرفکننده ProGuard را ارسال کند تا مصرفکنندگان ملزم به اضافه کردن آنها نباشند.
- شماره ۳۷۰۹۴۷۲۶ : Espresso Intents حاوی برچسب برنامه غیرضروری است
- شماره ۳۷۰۹۳۹۵۳ : اسپرسو: بررسی متن خطای تهی/خالی در دسترس نیست
- شماره ۳۷۰۷۱۷۷۶ :
espresso-coreفایلهای.pomمربوط به Guava را جاسازی میکند - شماره ۳۷۰۶۲۶۱۲ : NPE در
release() - شماره ۳۷۰۶۳۳۸۹ : داشتن Guava و
espresso-webبه عنوان وابستگیهایandroidTestکامپایل نمیشود - شماره ۳۷۰۷۰۵۳۳ : افزودن پشتیبانی برای
NavigationViewدر کتابخانه پشتیبانی طراحی اندروید
- دونده
- رفع مشکل استفاده از
@UiThreadTestدر ترکیب با@Test(timeout = 123) - آرگومان runner
-e notClassرفع شد. - رفع مشکل
-e log برای پشتیبانی از مجموعههای تست JUnit3 و JUnit4 و همچنین اجراکنندههایParameterizedوEnclosed - شماره ۳۷۶۶۳۵۳۰ : قبل و بعد از هر روش تست، منتظر بمانید تا تمام فعالیتها تمام شوند
- شماره ۳۷۱۳۲۶۸ : اسپرسو قبل از انجام اقدام بعدی منتظر تکمیل ایجاد کادر محاورهای نمیماند
- شماره ۳۷۱۲۳۲۱۳ :
@RequiresDeviceدر x86_64 ABI نادیده گرفته میشود - شماره 37101485 : برخی از آرگومانهای ارائه شده توسط manifest برای
AndroidJUnitRunner- مانند اندازه تست، حاشیهنویسی و اشکالزدایی - نادیده گرفته میشوند. - شماره ۳۷۰۸۲۸۵۷ : اجرای تست نیمه موازی Espresso روی اشیاء استاتیک با شکست مواجه میشود
- شماره ۳۷۰۶۳۳۹۶ : Context با
ProviderTestCase2مقداردهی اولیه نشده است (باعثNullPointerExceptionمیشود)
- رفع مشکل استفاده از
- قوانین
- چرخه حیات
ActivityTestRuleاصلاح شد تا رفتار در مقداردهی اولیهActivityTestRuleمعمولی و تنبل یکسان شود. - شماره ۳۷۰۷۹۹۴۳ : رفع مشکل
ServiceTestRuleبرای امکان اتصال مجدد - شماره ۳۷۱۰۹۳۴۲ : اضافه کردن
getActivityResult()وActivityResultMatchers
- چرخه حیات
- رابط کاربری خودکار
-
setUiAutomationFlags()برای استفاده باUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES- این بهUiAutomatorاجازه میدهد تا در حالی که سایر سرویسهای دسترسی در حال اجرا هستند، استفاده شود. - مشکل ۳۷۰۸۲۸۱۳ :
setText()روی اشیاء خالیEditTextدر صورتی که سطح API برابر با ۱۹ یا کمتر باشد،NullPointerExceptionرا صادر میکند.
-
سایر تغییرات قابل توجه
- فایلهای باینری اکنون از طریق Google Maven منتشر میشوند
- کاهش حجم فایلهای JAR مربوط به
espresso-coreوespresso-web- وابستگیهای تعبیهشده اکنون دارای ProGuard هستند. - اکنون همه فایلهای
.aarشامل قوانین ProGuard میشوند - فایلهای
proguard_library.cfgرا به مصنوعات منتشر شده اضافه کنید - رابط
Tapperنسخه جدیدی ازsendTap()را برای پیادهسازی دارد.
مشارکتهای خارجی
- اسپرسو
- دونده
- قوانین
اسپرسو ۲.۲.۲، رانر/رولز ۰.۵ (۲۰۱۶-۰۲-۲۲، انتشار بیصدا)
ویژگیهای جدید
- اسپرسو
- شماره ۱۹۴۲۵۳ : اضافه کردن پشتیبانی برای NavigationView در کتابخانه طراحی پشتیبانی اندروید
- بررسیهای مربوط به انیمیشنها و انتقالهای فعال اضافه شد
- رابط برنامهنویسی کاربردی جدید
ViewMatcher:withResourceName()
رفع اشکالات
- اسپرسو
- شماره ۱۹۵۳۳۱ : espresso-core فایلهای pom مربوط به guava را جاسازی میکند
- منبع شمارشگر غیرفعال را از espresso-contrib خارج کرد.
- قوانین
- شماره ۱۸۷۲۴۹ : NPE در
Intents.release()
- شماره ۱۸۷۲۴۹ : NPE در
- دونده
- مشکل ۱۹۶۰۶۶: آرگومان
-e log trueدرAndroidJUnitRunnerتست واقعی را دور نمیزند. - منتظر اشکالزدا در
onCreate() مربوط به اجراکننده باشید - تمام حاشیهنویسیهای تست پشتیبانیشده از پلتفرم خارج و به ATSL منتقل شدند.
- حذف ردپای پشته در مورد عدم وجود JSBridge
- رفع مشکل
AndroidAnnotatedBuilder
- مشکل ۱۹۶۰۶۶: آرگومان
سایر تغییرات قابل توجه
-
ActivityTestRule،UiThreadTestRule،IntentsTestRuleوServiceTestRuleاز نسخه بتا خارج شدهاند. - فایل تنظیمات سبک کد را برای قالببندی یکنواخت کد اضافه کنید
اسپرسو ۲.۲.۱، رانر/رولز ۰.۴ (۲۰۱۵-۰۹-۱۵)
ویژگیهای جدید
- قوانین
- سازنده جدید
IntentsTestRuleبرای سازگاری کامل باActivityTestRuleاضافه شد
- سازنده جدید
- دونده
- نصب چندرسانهای ویژه برای سطوح API 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
- اجرای همه تستها به جز تستهای یک کلاس خاص:
مشارکتهای خارجی
- اسپرسو
- ۱۵۷۹۱۱ : تطبیقدهندهی نما برای نوع ورودی در یک شیء
EditTextاضافه کنید - ۱۵۷۹۱۲ : اضافه کردن تطبیقدهندهی نما برای تطبیق متن خطا در یک شیء
EditText - ۱۵۰۶۷۴ : پشتیبانی
DrawerActionsبرای کشوهایی با گرانش دلخواه اضافه شد - ۱۵۰۷۴۴ :
DrawerActionsدیگرparentListenerنشت نمیدهد - ۱۵۳۳۰۳ : وزن مخصوص مشخص شده در چکهای «آیا کشو باز است یا بسته»
- ۱۵۷۹۱۰ : اضافه کردن
DrawerLayoutبرای باز و بسته کردن factoryها
- ۱۵۷۹۱۱ : تطبیقدهندهی نما برای نوع ورودی در یک شیء
رفع اشکالات
- اسپرسو
-
ViewActions.closeSoftKeyboard()اکنون تضمین میکند که صفحهکلید نرمافزاری بهطور کامل از بین رفته است. - مشکل همگامسازی با متد
Espresso.pressBack()در Espresso در سطح API 21 و بالاتر برطرف شد. - هماهنگسازی ثابت برای انیمیشنهای بسته شدن صفحهکلید در سطح API 23
-
- قوانین
- رفع مشکل
ServiceTestRuleدر API سطح ۲۳،startService()باید همیشه با یکIntentصریح فراخوانی شود.
- رفع مشکل
- دونده
- رفع مشکل خرابی پشتیبانی از Gradle
JaCoCo - رفع مشکل پشتیبانی از تست شاردینگ (sharding) ناقص
- رفع مشکل وضعیت نامتناسب در اجرای تست پس از وقفههای تست به سبک
JUnit3
- رفع مشکل خرابی پشتیبانی از Gradle
سایر تغییرات قابل توجه
- رفع مشکلات Javadoc و بهبود پیامهای خطا
- هنگام استفاده از فیلترهای متد، متدهای
suite()را نادیده بگیرید و خطاهای init را نادیده نگیرید.
اسپرسو ۲.۲ / ATSL ۰.۳ (۲۰۱۵-۰۶-۰۹)
ویژگیهای جدید
- اسپرسو-وب ۲.۲
- پشتیبانی جدید
WebView
- پشتیبانی جدید
- اسپرسو کور ۲.۲
- برای استفاده از dagger نسخه ۲ مهاجرت کرد.
- برای استفاده از hamcrest نسخه ۱.۳ مهاجرت کرد
- اسپرسو-کانتریب ۲.۲
- بررسیهای دسترسیپذیری
- پشتیبانی گرانشی
DrawerActions
- قوانین ۰.۳
- قانون
DisableOnAndroidDebug
- قانون
- دونده ۰.۳
- ارتقا از JUnit نسخه ۴.۱۰ به JUnit نسخه ۴.۱۲
- برای استفاده از Hamcrest نسخه ۱.۳ مهاجرت کرد.
رفع اشکالات
- رفع مشکل نشت
ParentListenerDrawerActions - شکست فرض اکنون به عنوان یک آزمون نادیده گرفته شده به جای یک آزمون ناموفق در نظر گرفته میشود.
- رفع مشکل نشت نمونههای فعالیت
MonitoringInstrumentationاز طریقExecutorService - مشکل گیر کردن فعالیتهای بیسرپرست در مرحله متوقفشده برطرف شد
- تابع
Until.scrollFinished()را بهروزرسانی کنید تا در صورت عدم ایجاد رویداد اسکرول، مقدار true را برگرداند. درUiObject2#setText()از NPE احتمالی جلوگیری کنید.
اسپرسو ۲.۱، تست رانر/قوانین ۰.۲ و UIAutomator ۲.۱.۰ (۲۰۱۵-۰۴-۲۱)
شکستن تغییرات
- مصنوع 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 : یک API شبیه Mockito که تست تعاملی هرمتیک را با اجازه دادن به نویسندگان تست برای تأیید و حذف intentهای خروجی، امکانپذیر میکند.
-
IntentsTestRule: ازActivityTestRuleارثبری میکند، Espresso-Intents را در تستهای رابط کاربری تابعی مقداردهی اولیه و منتشر میکند.
-
- هسته اسپرسو
-
ViewActions: قابلیت اجرای دستورات سراسری (global assertion) قبل از اجرای اکشنها اضافه شده است. این قابلیت برای سایر فریمورکهایی که بر پایه Espresso ساخته میشوند، مفید است تا وضعیت سلسله مراتب view را در حین اجرای مجموعه تست Espresso موجود، اعتبارسنجی کنند. -
ViewMatchers.withContentDescription() سربارگذاریresId
-
- قوانین
-
ActivityTestRule: این قانون، تست عملکردی یک فعالیت واحد را فراهم میکند. - حاشیهنویسیهای
UiThreadRuleوUiThreadTest: این قانون به متد تست حاشیهنویسی شده باUiThreadTestاجازه میدهد تا روی نخ اصلی برنامه (یا نخ رابط کاربری) اجرا شود. -
ServiceTestRule: این قانون، تست عملکردی یک سرویس را فراهم میکند.
-
- دونده
-
ApplicationLifecycleCallback: فراخوانی برای نظارت بر رویدادهای چرخه حیات برنامه - اکنون میتوان تمام آرگومانهای runner را با استفاده از تگ
<meta-data>در فایل manifest اندروید نیز مشخص کرد.
-
- UIAutomator
-
UiDevice.dumpWindowHierarchy()اکنون میتواند یکFileیا یکOutputStreamبپذیرد.
-
رفع اشکالات
- اسپرسو
- تطبیقدهندهی مکاننما اکنون اگر ستون پیدا نشود،
falseرا برمیگرداند تا Hamcrest بتواند به مکاننمای بعدی برود. - دیگر
NullPointerExceptionباPreferenceMatcherswithTitleرخ نمیدهد - لغو ثبت منابع غیرفعال دیگر باعث نمیشود که اسپرسو فکر کند ما منابع غیرفعال مشغول داریم
- نسخه پشتیبانی حاشیهنویسیهای مورد استفاده توسط Espresso Contrib بهروزرسانی شد
- تطبیقدهندهی مکاننما اکنون اگر ستون پیدا نشود،
- دونده
-
AndroidJUnit4اکنون تستهایی را که فرضیات ناموفق دارند، رد میکند.
-
- UIAutomator
- برای جلوگیری از
StaleObjectExceptionناظران را اجرا کنید
- برای جلوگیری از
سایر تغییرات قابل توجه
- وقتی نمیتوانیم متن را با رشتهای غیر از لاتین تایپ کنیم، پیام خطای بهتری اضافه شود
UIAutomator 2.0 (2015-03-12)
UI Automator اکنون مبتنی بر Android Instrumentation است و میتوانید با استفاده از دستور ./gradlew connectedCheck تستها را بسازید و اجرا کنید.
اسپرسو نسخه ۲.۰، تست رانر ۰.۱ (منتشر شده در: ۲۰۱۴-۱۲-۱۹)
شکستن تغییرات
- اسپرسو به یک فضای نام جدید، از
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قرار دارد (همانطور که همیشه باید داشته باشد)
-
- اختیاری (یک وابستگی guava) از API عمومی حذف شده است تا از بستهبندی مجدد وابستگی guava پشتیبانی شود و از تصادم DEX (منبع اصلی مشکلات توسعه) جلوگیری شود. روشهای تحت تأثیر شامل موارد زیر هستند:
-
ViewAssertion.check() -
HumanReadables.getViewHierarchyErrorMessage()
-
ویژگیهای جدید
- اقدامات
-
ViewActions-
replaceText() -
openLink() - بالا و پایین بکشید
-
- اسپرسو-کمک
-
RecyclerViewActions: تعاملات باRecyclerViewsرا مدیریت میکند. -
PickerActions: تعاملات با انتخابگرهایDateوTimeرا مدیریت میکند.
-
-
- تطبیقدهندهها
-
RootMatchers-
isPlatformPopup()
-
-
ViewMatchers-
isJavascriptEnabled() -
withSpinnerText() -
withHint() -
isSelected() -
hasLinks()
-
-
LayoutMatchers: تطبیقدهندههایی برای تست طرحبندی مرتبط با i18n -
CursorMatchers: مجموعهای از تطبیقدهندهها برای اشیاءCursor
-
- ادعاها
-
PositionAssertions، شاملisLeftOf()وisAbove(): مجموعهای ازViewAssertionsبرای بررسی موقعیت نسبی عناصر روی صفحه -
LayoutAssertions: ادعاهایی برای آزمایش طرحبندی مربوط به i18n
-
- برنامه آزمون: بسیاری از فعالیتها/آزمونهای نمونه جدید
- دیگر
-
Espresso.unregisterIdlingResources()وEspresso.getIdlingResources(): انعطافپذیری بیشتری برای کار باIdlingResourcesفراهم میکند. -
ViewInteraction.withFailureHandler(): امکان لغو مدیریتکنندهی خطا ازonView()را فراهم میکند. - پشتیبانی
onData()برایAdapterViewsکه توسطCursorAdaptersپشتیبانی میشوند
-
رفع اشکالات
-
ViewMatchers.isDisplayed()با نماهایی مطابقت دارد که کل صفحه نمایش را اشغال میکنند، اما دیگر کمتر از ۹۰٪ نمایش داده نمیشوند. - انجام فراخوانی اکشن swipe به
DrawerActions.openDrawer()دیگر منجر بهIdlingResourceTimeoutExceptionنمیشود.
سایر تغییرات قابل توجه
- از ساخت با Maven به Gradle تغییر دادم
- وابستگیهای Espresso (Guava، Dagger، Hamcrest) را از دسترس خارج کرد تا از تداخل DEX جلوگیری شود.
- تغییر کرد تا هنگام ثبت و لغو ثبت منابع غیرفعال، موفقیت یا شکست را نشان دهد.
- پشتیبانی از Lollipop: قرار دادن
message.recycle()در پشت یک رابط برای در نظر گرفتن تغییرات مربوط به نسخه - سطح SDK هدف به ۲۱ تغییر یافت - بیشتر روی برنامه آزمایشی تأثیر میگذارد
نسخه ۱.۱ (منتشر شده در: ۲۰۱۴-۰۱-۰۸)
اسپرسو
-
ViewActionsجدید نمایswipeLeftوswipeRight - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره هدف را که Espresso باید عملیات را در آن اجرا کند، فراهم میکند.
- بهبودهایی در
TypeTextAction: امکان تایپ متن در نمای از پیش فوکوسشده را فراهم میکند که افزودن متن را آسانتر میکند. - رفع اشکالات متعدد
کتابخانه مشارکت اسپرسو
- این کتابخانه جدید شامل ویژگیهایی است که Espresso را تکمیل میکنند، اما بخشی از کتابخانه اصلی نیستند.
-
DrawerActionsجدید برای عملیات رویDrawerLayout: به کتابخانه پشتیبانی اندروید وابسته است، از این رو آن را خارج از کتابخانه اصلی Espresso نگه میداریم.
نمونه آزمایشها
- این تستها به همان بستهای که اپلیکیشن تست در آن قرار دارد، منتقل شدهاند.
- Maven POM ها برای حذف deps های تکراری guava اصلاح شده اند، بنابراین
mvn installاکنون باید کار کند.