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 است
- هسته
- فعالیت های 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-J.Unit 1.1.0-beta01 (06-12-2018)
- هسته
- مصنوع پسوند core-ktx kotlin جدید! شامل یک API ActivityScenario.launchActivity مناسب برای kotlin است
- API جدید ActivityScenario برای راه اندازی فعالیت ها با اهداف سفارشی
- API جدید ActivityScenario برای دریافت نتیجه Activity
- ActivityScenario را قابل بسته شدن کنید
- اسپرسو
- باResourceNameMatcher و HumanReadables را تغییر دهید تا با API 28 سازگار باشد.
- توضیحات ReplaceTextAction را بهروزرسانی کنید تا stringToBeSet را در بر بگیرد
- پشتیبانی از اسپرسو در حالت Robolectric paused looper.
- JUnit
- API جدید ActivityScenarioRule، برای راهاندازی خودکار و بستن یک Activity در راهاندازی آزمایشی و حذف
- مصنوع جدید پسوند junit-ktx kotlin! شامل یک API ActivityScenarioRule مناسب برای kotlin است
- دونده
- پکیج -e و -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 را روی 14 و targetSdkVersion را روی 28 تنظیم کنید
- اسپرسو
- برای کار با انواع غیر رشته ای، با ContentDescription رفع کنید
- برای استفاده از اسپرسو در روبولکتریک پشتیبانی اضافه کنید
- شماره 72798625 : اسپرسو ViewMatchers.withText وقتی textAllCaps فعال است کار نمی کند
- برای تزریق توالی رویدادهای حرکتی، پشتیبانی اضافه کنید
- مقاصد
- برای بازیابی لیست مقاصد، API بتا را اضافه کنید. برای استفاده با ادعاهای حقیقت جدید در نظر گرفته شده است
- دونده
- پشتیبانی از برنامه های فوری را اضافه کنید
- 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 نه. یک پرچم جدید ارکستراتورDebug برای اشکال زدایی خود ارکستر اضافه شد
- هسته
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- بازیابی زمینه: ApplicationProvider
- کنترل چرخه حیات فعالیت: ActivityScenario (بتا)
- سازندگان برای MotionEvent، PackageInfo
- کلاس کاربردی Parceables
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- حقیقت
- مصنوع جدید! شامل موضوعات حقیقت سفارشی برای Notification، Intent، Bundle، Parcelable و MotionEvent
- JUnit
- مصنوع جدید! شامل JUnit runner class 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 (2018-04-16)
- اسپرسو
- شکستن تغییر API:
- در شماره 64062890 متوجه شدیم که از Guava Optional در API عمومی خود استفاده می کردیم. این نظارت وحشتناکی از طرف ما بود. در نتیجه، یک تغییر API عمومی در این نسخه برای رسیدگی به این مشکل وجود دارد. ما یک بسته بندی زشت را در اطراف کلاس Guava Optional معرفی کردیم، به نام EspressoOptional که در فضای نام "android.support.test.espresso.util" زندگی می کند. توسعهدهندگانی که از Guava Optional API لو رفته استفاده میکردند، باید واردات و مراجع خود را برای استفاده از EspressoOptional در طول بهروزرسانی به این نسخه جدید تغییر دهند. متاسفم برای ناراحتی که ممکن است ایجاد کند.
- APIهای onView() و onData() اکنون برای جلوگیری از خطاها @CheckReturnValue علامت گذاری شده اند.
- فایل POM هسته اسپرسو را ثابت کرد تا وابستگی "قوانین" را ایجاد نکند، در عوض POM با هدف اسپرسو آن را بکشد. این باید یک تغییر NoOp برای توسعه دهندگان باشد زیرا اسپرسو-نیت ها بدون هسته اسپرسو قابل استفاده نیستند.
- شماره 65486414 : اسپرسو فاقد وابستگی به گواوا است
- شماره 65576174 : Espresso IdlingResourceRegistry.sync باعث شکست تست دوم می شود
- شماره 65568629 : Espresso.onIdle از IdlingRegistry استفاده نمی کند
- شماره 69333598 : اسپرسو 3.0.1 با play-services-auth:11.6.0 در ماژول کتابخانه اندروید ناسازگار است.
- شماره 64062890 : نوع اختیاری داخلی توسط رابط AdapterViewProtocol آشکار شد
- شماره 64091847 : اسپرسو 3.0.0 نباید به دونده آزمایشی وابسته باشد
- شماره 73722050 : کلاسهای بستههای espresso-contrib 3.0.2-alpha1 android.arch.{lifecycle/core}
- شکستن تغییر API:
- اسپرسو ریموت
- این یک مصنوع کاملاً جدید است. ما همه عملکردهای چند فرآیندی اسپرسو را خارج از مصنوع هسته اسپرسو جدا کردیم. این تمیزتر است و باید اندازه کلی هسته اسپرسو و تعداد روش آن را به میزان قابل توجهی کاهش دهد.
- دونده
- اگر برای تراکنش بایندر بزرگ است، رد پشته را کوتاه کنید. از آنجایی که AJUR باید خرابی ها را از طریق IPC بایندر به AM گزارش کند، باید مطمئن شویم که از حد تراکنش Binder - که 1 مگابایت در هر فرآیند است - تجاوز نمی کنیم.
- شماره 65828576 : خرابی TestRequestBuilder هنگام اجرای تست در کلاس با @Ignore
- شماره 37057596 : ما با شکست در @BeforeClass مقابله نمی کنیم
- قوانین
- اطمینان حاصل کنید که پس از تغییرات چرخه عمر، یک مرجع در مورد فعالیت مورد آزمایش منتشر کنید. در طول مدت آزمایش، اکنون میتوانید Activity را مستقیماً با استفاده از مرجع بدستآمده از #getActivity() دستکاری کنید، اگر Activity به پایان برسد و مجدداً راهاندازی شود، مرجع بازگشتی توسط #getActivity() اکنون همیشه به نمونه فعلی Activity اشاره میکند. .
- شماره 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است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFileAndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
pm clear context.getPackageName()وpm clear targetContext.getPackageName()را در بین فراخوانهای آزمایشی اجرا کند، پرچم-e clearPackageDataارسال کنید. توجه داشته باشید، متن دستور clear، App under test context است. - ثابت - هنگام اجرای یک تست خالی، با نام مستعار. نه @Test در داخل هدف، نتیجه آزمایش با حالت قدیمی متفاوت است.
- شماره 72758547 : ارکستراتور آزمایشی باعث میشود که دادههای پوشش Jacoco ناقص باشد، فقط آخرین دادههای اجرای آزمایشی را دارد.
- شماره 67916042 : Android Test Orchestrator: اجرا در هنگام خرابی Process به دلیل OutOfMemory متوقف شد
- شماره 77752735 : ارکستراتور برای TransactionTooLargeException از کار می افتد
- شماره 77549481 : ارکستراتور آزمون باید بعد از هر آزمون "بعد از ظهر" را اجرا کند
- پاس
Espresso 3.0.2-alpha1، Runner 1.0.2-alpha1، Rules 1.0.2-alpha1، AndroidTestOrchestrator 1.0.2-alpha1 (05-12-2017)
اسپرسو
-
Intentsاکنون پاسخی قابل فراخوانی دارد که به آزمایشها اجازه میدهد بعد از گرفتن یک هدف شلیک شده اما قبل از برگرداندن یک شیInstrumentation.ActivityResultاجرا شوند.
-
دونده
مانیتور maven artifact
com.android.support.test:monitor:<version>را برای کاربرانی که بدون اجرای آزمایشی و ویژگیهای JUnitMonitoringInstrumentationنیاز دارند تقسیم کنید.اگر از
com.android.support.test:runner:<version>استفاده می کنید، همه چیز همانطور که انتظار می رود کار می کند، زیرا Gradle به طور خودکار ماژولmonitorرا به عنوان یک وابستگی به ماژولrunnerمی کشد.پرچم
newRunListenerOrderModeاضافه شد. وقتی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)
اسپرسو
- یک گزینه
IdlingPolicyبرای سرکوبonTimeout()زمانی که یک step debugger به VM متصل است اضافه کرد. - مسائل 64024656 ، 64247586 و 64525881 : خرابیها را برای بارگیری ناموفق کلاس گزارش نکنید، مگر اینکه کاربر کلاسهای خاصی را با گنجاندن آرگومان اجراکننده کلاس
-eبارگیری کند. - شماره 64877246 : کلاس های گمشده را به فایل JAR منابع اضافه کنید.
- یک گزینه
دونده
- منطق
ShardingFilterساده شده. - شماره 65025743 : فیلتر
@RequiresDeviceاکنون از شبیه سازهای FTL پشتیبانی می کند.
- منطق
AndroidTestOrchestrator
- خرابی های گزارش را تکرار نکنید. هنگامی که یک فرآیند تست پس از شکست از کار می افتد، اکنون فقط یک شکست برای آزمایش گزارش می شود.
- Javadoc برای ارکستراتور ثابت شد.
- اکنون در صورت خرابی فرآیند از راه دور، آزمایشها از دست رفته است.
- اکنون موارد آزمایش نادیده گرفته شده را کنترل می کند.
- اکنون موارد آزمایش نادیده گرفته شده را از پاورقی برای مطابقت با نتایج قدیمی حذف می کند.
- رفع مشکلات مجوز زمان اجرا گزارشهای آزمایش اکنون روی کارت SD در Android نسخه 7.0 (سطح API 24) و بالاتر نوشته میشوند.
Espresso 3.0.0، Runner 1.0.0، Rules 1.0.0، AndroidTestOrchestrator 1.0.0 (25-07-2017، اعلامیه )
شکستن تغییرات
- تمام مصنوعات
- کاهش پشتیبانی از سطوح API کمتر از 15 – با این حال، حداقل SDK همچنان به سطح 9 API اشاره می کند تا به کاربران زمان برای ارتقاء بدهد.
- اسپرسو
- کلاس منسوخ شده
android.support.test.espresso.contrib.CountingIdlingResourceحذف شده و بهandroid.support.test.espresso.idling.CountingIdlingResourceمنتقل شده است.- به جای
registerIdlingResources()ازgetInstance().register()استفاده کنید
- به جای
- Guava اکنون به یک فضای نام "داخلی" متفاوت منتقل شده است - اگر به طور تصادفی از Guava API از طریق فضاهای نام Espresso استفاده می کنید، ممکن است شکستگی ها را مشاهده کنید.
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
.core.deps.guava.) - نسخه کتابخانه پشتیبانی خود را به 25.4.0 یا بالاتر ارتقا دهید
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
- کلاس منسوخ شده
مسائل شناخته شده
- AndroidTestOrchestrator
- آرگومان های اجراکننده
-e numShardsو-e shardIndexدر حال حاضر پشتیبانی نمی شوند - تست های پارامتری در حال حاضر پشتیبانی نمی شوند
- آرگومان های اجراکننده
ویژگی های جدید
- اسپرسو
- پشتیبانی از اسپرسو چند فرآیندی جدید در API 26 برای
espresso-coreوespresso-web، اما نهespresso-contrib -
IdlingRegistryAPI سبک وزن جدید- منتشر شده به عنوان بخشی از
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مطابقت دارد
-
- روشهای عمل مشاهده جدید:
- عملکرد مشاهده
scrollTo()پیشرفته برای کار با نوادگانListView -
repeatedlyUntil()-ViewActionداده شده را روی یک view انجام می دهد تا زمانی که view باViewMatchersمورد نظر مطابقت داشته باشد.
- عملکرد مشاهده
- روش های جدید اسپرسو:
-
pressBackUnconditionally()– شبیه بهpressBack()است اما در هنگام پیمایش Espresso استثنایی ایجاد نمی کند -
noActivity()– نیاز به انتظار برای یک فعالیت قبل از انجامViewActionیاViewAssertionرا حذف می کند. -
onIdle()- رشته اصلی را تا زمانی که برنامه بیکار شود حلقه می کند -
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– امکان عبور از بارگذارهای کلاس را با استفاده از runner args فراهم می کند -
-e filter– اضافه کردن پشتیبانی برای فیلترهای JUnit سفارشی که با استفاده از runner args مشخص شوند -
-e runnerBuilder– به توسعهدهندگان اجازه میدهد تا پیادهسازیهای خود را ازRunnerBuilderارائه دهند که میتواند تعیین کند که آیا و چگونه میتوانند در برابر یک کلاس خاص اجرا شوند یا خیر.
-
- قوانین
-
ProviderTestRule– API جدید برای آزمایش اشیاءContentProvider -
getActivityResult()وActivityResultMatchers– API جدید برای بازیابی نتیجه فعالیت فعالیتی کهsetResult()نامیده است.
-
- AndroidTestOrchestrator
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
- خرابیهای برنامه، سازهای دونده را از بین میبرند، اما نه ارکستراتور، و به مجموعه آزمایشی شما اجازه میدهد ادامه پیدا کند.
- به نصب APK ارکستراتور نیاز دارد -
'com.android.support.test:orchestrator:1.0.0' - نسخه 1.0 فقط یک رابط خط فرمان دارد. ادغام با Android Studio و Firebase Test Labs برنامه ریزی شده است
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
رفع اشکال
- اسپرسو
- بهبود هماهنگ سازی نمای ریشه برای کاهش قابل توجه پوسته پوسته شدن
- خرابی
IdlingResourceRegistryرا برطرف کنید - همگام سازی بهتر در برابر اشیاء
IdlingResource - شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 37103280 : اسپرسو باید قوانین مصرف کننده ProGuard را ارسال کند تا مصرف کنندگان مجبور به اضافه کردن آنها نباشند
- شماره 37094726 : Espresso Intents حاوی برچسب کاربردی غیر ضروری است
- شماره 37093953 : اسپرسو: بررسی برای متن خطای پوچ/خالی موجود نیست
- شماره 37071776 :
espresso-coreفایل های.pomگواوا را جاسازی می کند - شماره 37062612 : NPE در حال
release() - شماره 37063389 : داشتن Guava و
espresso-webبه عنوان وابستگیandroidTestکامپایل نمی شود - شماره 37070533 : پشتیبانی از
NavigationViewرا در کتابخانه پشتیبانی طراحی اندروید اضافه کنید
- دونده
- رفع توانایی استفاده از
@UiThreadTestدر ترکیب با@Test(timeout = 123) - ثابت
-e notClassrunner arg -
-e logثابت برای پشتیبانی از مجموعههای آزمایشی JUnit3 و JUnit4، و همچنین رانرهایParameterizedوEnclosed - شماره 37663530 : قبل و بعد از هر روش تست منتظر بمانید تا تمام فعالیت ها به پایان برسد
- شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 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اگر سطح API 19 یا کمتر باشد،NullPointerExceptionپرتاب می کند.
-
سایر تغییرات قابل توجه
- باینری ها اکنون از طریق Google Maven منتشر می شوند
- کاهش اندازه فایلهای JAR
espresso-coreوespresso-web– وابستگیهای جاسازی شده اکنون ProGuard اعمال شده است - همه فایلهای
.aarاکنون شامل قوانین ProGuard میشوند - فایل های
proguard_library.cfgرا به مصنوعات منتشر شده اضافه کنید - رابط
Tapperدارای نسخه جدیدی ازsendTap()برای پیاده سازی است
کمک های خارجی
- اسپرسو
- دونده
- قوانین
اسپرسو 2.2.2، Runner/Rules 0.5 (22/02/2016، انتشار بیصدا)
ویژگی های جدید
- اسپرسو
- شماره 194253 : پشتیبانی از NavigationView را در کتابخانه طراحی پشتیبانی اندروید اضافه کنید
- بررسی هایی برای انیمیشن ها و انتقال های فعال اضافه شده است
- API جدید
ViewMatcher:withResourceName()
رفع اشکال
- اسپرسو
- شماره 195331 : هسته اسپرسو فایل های پوم گواوا را جاسازی می کند
- منبع بیکار شمارش خارج از اسپرسو کمک کرد
- قوانین
- شماره 187249 : NPE در
Intents.release()
- شماره 187249 : NPE در
- دونده
- شماره 196066: آرگومان
-e log trueدرAndroidJUnitRunnerتست واقعی را دور نمی زند - منتظر دیباگر در
onCreate()runner باشید - تمام حاشیه نویسی تست پشتیبانی شده از پلتفرم و به ATSL منتقل شد
- حذف ردیابی پشته در مورد هیچ JSBridge
-
AndroidAnnotatedBuilderرفع شد
- شماره 196066: آرگومان
سایر تغییرات قابل توجه
-
ActivityTestRule،UiThreadTestRule،IntentsTestRuleوServiceTestRuleاز نسخه بتا خارج شده اند - فایل تنظیمات سبک کد را برای قالب بندی کد یکنواخت اضافه کنید
اسپرسو 2.2.1، Runner/Rules 0.4 (2015-09-15)
ویژگی های جدید
- قوانین
- اضافه شدن سازنده جدید
IntentsTestRuleبرای سازگاری کامل باActivityTestRule
- اضافه شدن سازنده جدید
- دونده
- نصب multidex مورد ویژه برای سطوح 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
- اجرای همه آزمایشها به جز آزمایشهایی که در یک کلاس خاص هستند:
کمک های خارجی
- اسپرسو
- 157911 : برای نوع ورودی در یک شی
EditTextview matcher را اضافه کنید - 157912 : برای تطبیق متن خطا در یک شی
EditText، view matcher را اضافه کنید - 150674 : برای کشوهایی با جاذبه دلخواه، پشتیبانی از
DrawerActionsاضافه کنید - 150744 :
DrawerActionsدیگرparentListenerافشا نمی کند - 153303 : گرانش مشخص شده در چک های "کشو باز است یا بسته است"
- 157910 : کارخانجات باز و بستن
DrawerLayoutاضافه کنید
- 157911 : برای نوع ورودی در یک شی
رفع اشکال
- اسپرسو
-
ViewActions.closeSoftKeyboard()اکنون تضمین می کند که صفحه کلید نرم به طور کامل از بین رفته است - رفع مشکل همگامسازی با روش
Espresso.pressBack()Espresso در سطح API 21 و بالاتر - همگام سازی ثابت برای انیمیشن های بسته شدن صفحه کلید در سطح API 23
-
- قوانین
-
ServiceTestRuleدر سطح API 23 ثابت شد،startService()همیشه باید با یکIntentصریح فراخوانی شود.
-
- دونده
- پشتیبانی gradle شکسته
JaCoCoرفع شد - پشتیبانی از اشتراک گذاری تست شکسته ثابت شد
- وضعیت ناسازگار در دونده آزمایشی پس از وقفه های زمانی آزمون سبک
JUnit3رفع شد
- پشتیبانی gradle شکسته
سایر تغییرات قابل توجه
- اصلاحات جاوادوک و بهبود پیام خطا
- متدهای
suite()را نادیده بگیرید و هنگام استفاده از فیلترهای متد، خطاهای init را نادیده نگیرید
اسپرسو 2.2 / ATSL 0.3 (09-06-2015)
ویژگی های جدید
- اسپرسو وب 2.2
- پشتیبانی از
WebViewجدید
- پشتیبانی از
- اسپرسو هسته 2.2
- برای استفاده از dagger v2 مهاجرت کرد
- برای استفاده از hamcrest نسخه 1.3 مهاجرت کرد
- espresso-contrib 2.2
- بررسی های دسترسی
- پشتیبانی گرانشی
DrawerActions
- قوانین 0.3
-
DisableOnAndroidDebugقانون
-
- دونده 0.3
- از JUnit v4.10 به JUnit v4.12 ارتقا دهید
- برای استفاده از Hamcrest نسخه 1.3 مهاجرت کرد
رفع اشکال
-
DrawerActionsنشتParentListenerرفع شد - شکست فرضی اکنون به عنوان یک آزمون نادیده گرفته می شود تا یک آزمون شکست خورده
- موارد فعالیت نشت
MonitoringInstrumentationاز طریقExecutorServiceبرطرف کرد - برای فعالیت های یتیم که در مرحله متوقف شده گیر کرده بودند، رفع شد
-
Until.scrollFinished()را بهروزرسانی کنید تا اگر هیچ رویداد اسکرول ایجاد نشد، true را برگردانید. از 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 : یک API شبیه Mockito که با اجازه دادن به نویسندگان آزمون برای تأیید و نادیده گرفتن مقاصد خروجی، تست تعامل هرمتیک را ممکن میسازد.
-
IntentsTestRule:ActivityTestRuleرا گسترش می دهد، مقداردهی اولیه می کند و Espresso-Intent را در تست های رابط کاربری کاربردی منتشر می کند.
-
- اسپرسو هسته
-
ViewActions: قابلیت اضافه شده برای اجرای ادعاهای جهانی قبل از اجرای اقدامات. این برای سایر فریمورکهایی که در بالای اسپرسو ساخته میشوند مفید است تا وضعیت سلسلهمراتب نمایش را در زمانی که مجموعه آزمایشی اسپرسو موجود اجرا میشود، تأیید کند. -
ViewMatchers.withContentDescription()resIdاضافه بار
-
- قوانین
-
ActivityTestRule: این قانون تست عملکردی یک فعالیت را ارائه می دهد - حاشیه نویسی
UiThreadRuleوUiThreadTest: این قانون به روش تست حاشیه نویسی شده باUiThreadTestاجازه می دهد تا روی رشته اصلی برنامه (یا رشته UI) اجرا شود. -
ServiceTestRule: این قانون تست عملکردی یک سرویس را ارائه می دهد
-
- دونده
-
ApplicationLifecycleCallback: برگشت به تماس برای نظارت بر رویدادهای چرخه عمر برنامه - همه آرگومان های runner اکنون می توانند در فایل مانیفست اندروید با استفاده از تگ
<meta-data>نیز مشخص شوند.
-
- اتوماتاتور UIA
-
UiDevice.dumpWindowHierarchy()اکنون می تواند یکFileیا یکOutputStreamبپذیرد
-
رفع اشکال
- اسپرسو
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
falseرا برمیگرداند تا Hamcrest بتواند به مکاننمای بعدی ادامه دهد. -
NullPointerExceptionباPreferenceMatcherswithTitleدیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط Espresso Contrib استفاده شده است
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
- دونده
-
AndroidJUnit4اکنون از آزمایشات با فرضیات ناموفق صرف نظر می کند
-
- اتوماتاتور UIA
- برای جلوگیری از
StaleObjectExceptionتماشاگران را اجرا کنید
- برای جلوگیری از
سایر تغییرات قابل توجه
- وقتی نمیتوانیم متن را با رشتهای غیر لاتین تایپ کنیم، پیام خطای بهتری اضافه کنیم
UIAutomator 2.0 (12-03-2015)
UI Automator اکنون بر اساس Android Instrumentation ساخته شده است و میتوانید با استفاده از دستور ./gradlew connectedCheck آزمایشها را بسازید و اجرا کنید.
اسپرسو نسخه 2.0، تست رانر 0.1 (تاریخ انتشار: 19-12-2014)
شکستن تغییرات
- اسپرسو به فضای نام جدیدی منتقل شده است، از
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قرار دارد (همانطور که همیشه باید باشد)
-
- اختیاری (وابستگی به گواوا) از API عمومی حذف شده است تا از بسته بندی مجدد وابستگی گواوا پشتیبانی کند و از برخورد 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()با نماهایی مطابقت دارد که کل صفحه را اشغال می کنند، اما کمتر از 90٪ نمایش داده نمی شوند. - انجام فراخوانی عمل کش رفتن به
DrawerActions.openDrawer()دیگر منجر بهIdlingResourceTimeoutExceptionنمی شود
سایر تغییرات قابل توجه
- از ساختمان با Maven به Gradle تغییر مکان داد
- وابستگی های اسپرسو (Guava، Dagger، Hamcrest) را از مسیر خارج کرد تا از برخورد DEX جلوگیری شود.
- در هنگام ثبت و لغو ثبت منابع بلااستفاده، به موفقیت یا عدم موفقیت بازگشت
- پشتیبانی Lollipop:
message.recycle()در پشت یک رابط قرار دهید تا تغییرات مربوط به نسخه را در نظر بگیرید - تغییر سطح هدف SDK به 21 - بیشتر بر برنامه آزمایشی تأثیر می گذارد
نسخه 1.1 (تاریخ انتشار: 08/01/2014)
اسپرسو
-
swipeLeftوswipeRightViewActionsجدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
TypeTextAction: به تایپ متن در نمای از پیش متمرکز شده اجازه میدهد، که اضافه کردن متن را آسانتر میکند. - رفع اشکالات متعدد
کتابخانه مشارکت اسپرسو
- این کتابخانه جدید دارای ویژگی هایی است که مکمل اسپرسو هستند، اما بخشی از کتابخانه اصلی نیستند
-
DrawerActionsجدید برای عملکرد درDrawerLayout: وابستگی به کتابخانه پشتیبانی اندروید دارد، بنابراین ما آن را خارج از کتابخانه اصلی Espresso نگه می داریم
تست های نمونه
- این آزمایشها برای زندگی در همان بسته برنامه آزمایشی تغییر مکان دادهاند
- Maven POM برای حذف گواوا تکراری رفع شده است، بنابراین
mvn installباید اکنون کار کند
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 است
- هسته
- فعالیت های 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-J.Unit 1.1.0-beta01 (06-12-2018)
- هسته
- مصنوع پسوند core-ktx kotlin جدید! شامل یک API ActivityScenario.launchActivity مناسب برای kotlin است
- API جدید ActivityScenario برای راه اندازی فعالیت ها با اهداف سفارشی
- API جدید ActivityScenario برای دریافت نتیجه Activity
- ActivityScenario را قابل بسته شدن کنید
- اسپرسو
- باResourceNameMatcher و HumanReadables را تغییر دهید تا با API 28 سازگار باشد.
- توضیحات ReplaceTextAction را بهروزرسانی کنید تا stringToBeSet را در بر بگیرد
- پشتیبانی از اسپرسو در حالت Robolectric paused looper.
- JUnit
- API جدید ActivityScenarioRule، برای راهاندازی خودکار و بستن یک Activity در راهاندازی آزمایشی و حذف
- مصنوع جدید پسوند junit-ktx kotlin! شامل یک API ActivityScenarioRule مناسب برای kotlin است
- دونده
- پکیج -e و -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 را روی 14 و targetSdkVersion را روی 28 تنظیم کنید
- اسپرسو
- برای کار با انواع غیر رشته ای، با ContentDescription رفع کنید
- برای استفاده از اسپرسو در روبولکتریک پشتیبانی اضافه کنید
- شماره 72798625 : اسپرسو ViewMatchers.withText وقتی textAllCaps فعال است کار نمی کند
- برای تزریق توالی رویدادهای حرکتی، پشتیبانی اضافه کنید
- مقاصد
- برای بازیابی لیست مقاصد، API بتا را اضافه کنید. برای استفاده با ادعاهای حقیقت جدید در نظر گرفته شده است
- دونده
- پشتیبانی از برنامه های فوری را اضافه کنید
- 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 نه. یک پرچم جدید ارکستراتورDebug برای اشکال زدایی خود ارکستر اضافه شد
- هسته
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- بازیابی زمینه: ApplicationProvider
- کنترل چرخه حیات فعالیت: ActivityScenario (بتا)
- سازندگان برای MotionEvent، PackageInfo
- کلاس کاربردی Parceables
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- حقیقت
- مصنوع جدید! شامل موضوعات حقیقت سفارشی برای Notification، Intent، Bundle، Parcelable و MotionEvent
- JUnit
- مصنوع جدید! شامل JUnit runner class 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 (2018-04-16)
- اسپرسو
- شکستن تغییر API:
- در شماره 64062890 متوجه شدیم که از Guava Optional در API عمومی خود استفاده می کردیم. این نظارت وحشتناکی از طرف ما بود. در نتیجه، یک تغییر API عمومی در این نسخه برای رسیدگی به این مشکل وجود دارد. ما یک بسته بندی زشت را در اطراف کلاس Guava Optional معرفی کردیم، به نام EspressoOptional که در فضای نام "android.support.test.espresso.util" زندگی می کند. توسعهدهندگانی که از Guava Optional API لو رفته استفاده میکردند، باید واردات و مراجع خود را برای استفاده از EspressoOptional در طول بهروزرسانی به این نسخه جدید تغییر دهند. متاسفم برای ناراحتی که ممکن است ایجاد کند.
- APIهای onView() و onData() اکنون برای جلوگیری از خطاها @CheckReturnValue علامت گذاری شده اند.
- فایل POM هسته اسپرسو را ثابت کرد تا وابستگی "قوانین" را ایجاد نکند، در عوض POM با هدف اسپرسو آن را بکشد. این باید یک تغییر NoOp برای توسعه دهندگان باشد زیرا اسپرسو-نیت ها بدون هسته اسپرسو قابل استفاده نیستند.
- شماره 65486414 : اسپرسو فاقد وابستگی به گواوا است
- شماره 65576174 : Espresso IdlingResourceRegistry.sync باعث شکست تست دوم می شود
- شماره 65568629 : Espresso.onIdle از IdlingRegistry استفاده نمی کند
- شماره 69333598 : اسپرسو 3.0.1 با play-services-auth:11.6.0 در ماژول کتابخانه اندروید ناسازگار است.
- شماره 64062890 : نوع اختیاری داخلی توسط رابط AdapterViewProtocol آشکار شد
- شماره 64091847 : اسپرسو 3.0.0 نباید به دونده آزمایشی وابسته باشد
- شماره 73722050 : کلاسهای بستههای espresso-contrib 3.0.2-alpha1 android.arch.{lifecycle/core}
- شکستن تغییر API:
- اسپرسو ریموت
- این یک مصنوع کاملاً جدید است. ما همه عملکردهای چند فرآیندی اسپرسو را خارج از مصنوع هسته اسپرسو جدا کردیم. این تمیزتر است و باید اندازه کلی هسته اسپرسو و تعداد روش آن را به میزان قابل توجهی کاهش دهد.
- دونده
- اگر برای تراکنش بایندر بزرگ است، رد پشته را کوتاه کنید. از آنجایی که AJUR باید خرابی ها را از طریق IPC بایندر به AM گزارش کند، باید مطمئن شویم که از حد تراکنش Binder - که 1 مگابایت در هر فرآیند است - تجاوز نمی کنیم.
- شماره 65828576 : خرابی TestRequestBuilder هنگام اجرای تست در کلاس با @Ignore
- شماره 37057596 : ما با شکست در @BeforeClass مقابله نمی کنیم
- قوانین
- اطمینان حاصل کنید که پس از تغییرات چرخه عمر، یک مرجع در مورد فعالیت مورد آزمایش منتشر کنید. در طول مدت آزمایش، اکنون میتوانید Activity را مستقیماً با استفاده از مرجع بدستآمده از #getActivity() دستکاری کنید، اگر Activity به پایان برسد و مجدداً راهاندازی شود، مرجع بازگشتی توسط #getActivity() اکنون همیشه به نمونه فعلی Activity اشاره میکند. .
- شماره 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است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFileAndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
pm clear context.getPackageName()وpm clear targetContext.getPackageName()را در بین فراخوانهای آزمایشی اجرا کند، پرچم-e clearPackageDataارسال کنید. توجه داشته باشید، متن دستور clear، App under test context است. - ثابت - هنگام اجرای یک تست خالی، با نام مستعار. نه @Test در داخل هدف، نتیجه آزمایش با حالت قدیمی متفاوت است.
- شماره 72758547 : ارکستراتور آزمایشی باعث میشود که دادههای پوشش Jacoco ناقص باشد، فقط آخرین دادههای اجرای آزمایشی را دارد.
- شماره 67916042 : Android Test Orchestrator: اجرا در هنگام خرابی Process به دلیل OutOfMemory متوقف شد
- شماره 77752735 : ارکستراتور برای TransactionTooLargeException از کار می افتد
- شماره 77549481 : ارکستراتور آزمون باید بعد از هر آزمون "بعد از ظهر" را اجرا کند
- پاس
Espresso 3.0.2-alpha1، Runner 1.0.2-alpha1، Rules 1.0.2-alpha1، AndroidTestOrchestrator 1.0.2-alpha1 (05-12-2017)
اسپرسو
-
Intentsاکنون پاسخی قابل فراخوانی دارد که به آزمایشها اجازه میدهد بعد از گرفتن یک هدف شلیک شده اما قبل از برگرداندن یک شیInstrumentation.ActivityResultاجرا شوند.
-
دونده
مانیتور maven artifact
com.android.support.test:monitor:<version>را برای کاربرانی که بدون اجرای آزمایشی و ویژگیهای JUnitMonitoringInstrumentationنیاز دارند تقسیم کنید.اگر از
com.android.support.test:runner:<version>استفاده می کنید، همه چیز همانطور که انتظار می رود کار می کند، زیرا Gradle به طور خودکار ماژولmonitorرا به عنوان یک وابستگی به ماژولrunnerمی کشد.پرچم
newRunListenerOrderModeاضافه شد. وقتی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)
اسپرسو
- یک گزینه
IdlingPolicyبرای سرکوبonTimeout()زمانی که یک step debugger به VM متصل است اضافه کرد. - مسائل 64024656 ، 64247586 و 64525881 : خرابیها را برای بارگیری ناموفق کلاس گزارش نکنید، مگر اینکه کاربر کلاسهای خاصی را با گنجاندن آرگومان اجراکننده کلاس
-eبارگیری کند. - شماره 64877246 : کلاس های گمشده را به فایل JAR منابع اضافه کنید.
- یک گزینه
دونده
- منطق
ShardingFilterساده شده. - شماره 65025743 : فیلتر
@RequiresDeviceاکنون از شبیه سازهای FTL پشتیبانی می کند.
- منطق
AndroidTestOrchestrator
- خرابی های گزارش را تکرار نکنید. هنگامی که یک فرآیند تست پس از شکست از کار می افتد، اکنون فقط یک شکست برای آزمایش گزارش می شود.
- Javadoc برای ارکستراتور ثابت شد.
- اکنون در صورت خرابی فرآیند از راه دور، آزمایشها از دست رفته است.
- اکنون موارد آزمایش نادیده گرفته شده را کنترل می کند.
- اکنون موارد آزمایش نادیده گرفته شده را از پاورقی برای مطابقت با نتایج قدیمی حذف می کند.
- رفع مشکلات مجوز زمان اجرا گزارشهای آزمایش اکنون روی کارت SD در Android نسخه 7.0 (سطح API 24) و بالاتر نوشته میشوند.
Espresso 3.0.0، Runner 1.0.0، Rules 1.0.0، AndroidTestOrchestrator 1.0.0 (25-07-2017، اعلامیه )
شکستن تغییرات
- تمام مصنوعات
- کاهش پشتیبانی از سطوح API کمتر از 15 – با این حال، حداقل SDK همچنان به سطح 9 API اشاره می کند تا به کاربران زمان برای ارتقاء بدهد.
- اسپرسو
- کلاس منسوخ شده
android.support.test.espresso.contrib.CountingIdlingResourceحذف شده و بهandroid.support.test.espresso.idling.CountingIdlingResourceمنتقل شده است.- به جای
registerIdlingResources()ازgetInstance().register()استفاده کنید
- به جای
- Guava اکنون به یک فضای نام "داخلی" متفاوت منتقل شده است - اگر به طور تصادفی از Guava API از طریق فضاهای نام Espresso استفاده می کنید، ممکن است شکستگی ها را مشاهده کنید.
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
.core.deps.guava.) - نسخه کتابخانه پشتیبانی خود را به 25.4.0 یا بالاتر ارتقا دهید
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
- کلاس منسوخ شده
مسائل شناخته شده
- AndroidTestOrchestrator
- آرگومان های اجراکننده
-e numShardsو-e shardIndexدر حال حاضر پشتیبانی نمی شوند - تست های پارامتری در حال حاضر پشتیبانی نمی شوند
- آرگومان های اجراکننده
ویژگی های جدید
- اسپرسو
- پشتیبانی از اسپرسو چند فرآیندی جدید در API 26 برای
espresso-coreوespresso-web، اما نهespresso-contrib -
IdlingRegistryAPI سبک وزن جدید- منتشر شده به عنوان بخشی از
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مطابقت دارد
-
- روشهای عمل مشاهده جدید:
- عملکرد مشاهده
scrollTo()پیشرفته برای کار با نوادگانListView -
repeatedlyUntil()-ViewActionداده شده را روی یک view انجام می دهد تا زمانی که view باViewMatchersمورد نظر مطابقت داشته باشد.
- عملکرد مشاهده
- روش های جدید اسپرسو:
-
pressBackUnconditionally()– شبیه بهpressBack()است اما در هنگام پیمایش Espresso استثنایی ایجاد نمی کند -
noActivity()– نیاز به انتظار برای یک فعالیت قبل از انجامViewActionیاViewAssertionرا حذف می کند. -
onIdle()- رشته اصلی را تا زمانی که برنامه بیکار شود حلقه می کند -
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– امکان عبور از بارگذارهای کلاس را با استفاده از runner args فراهم می کند -
-e filter– اضافه کردن پشتیبانی برای فیلترهای JUnit سفارشی که با استفاده از runner args مشخص شوند -
-e runnerBuilder– به توسعهدهندگان اجازه میدهد تا پیادهسازیهای خود را ازRunnerBuilderارائه دهند که میتواند تعیین کند که آیا و چگونه میتوانند در برابر یک کلاس خاص اجرا شوند یا خیر.
-
- قوانین
-
ProviderTestRule– API جدید برای آزمایش اشیاءContentProvider -
getActivityResult()وActivityResultMatchers– API جدید برای بازیابی نتیجه فعالیت فعالیتی کهsetResult()نامیده است.
-
- AndroidTestOrchestrator
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
- خرابیهای برنامه، سازهای دونده را از بین میبرند، اما نه ارکستراتور، و به مجموعه آزمایشی شما اجازه میدهد ادامه پیدا کند.
- به نصب APK ارکستراتور نیاز دارد -
'com.android.support.test:orchestrator:1.0.0' - نسخه 1.0 فقط یک رابط خط فرمان دارد. ادغام با Android Studio و Firebase Test Labs برنامه ریزی شده است
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
رفع اشکال
- اسپرسو
- بهبود هماهنگ سازی نمای ریشه برای کاهش قابل توجه پوسته پوسته شدن
- خرابی
IdlingResourceRegistryرا برطرف کنید - همگام سازی بهتر در برابر اشیاء
IdlingResource - شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 37103280 : اسپرسو باید قوانین مصرف کننده ProGuard را ارسال کند تا مصرف کنندگان مجبور به اضافه کردن آنها نباشند
- شماره 37094726 : Espresso Intents حاوی برچسب کاربردی غیر ضروری است
- شماره 37093953 : اسپرسو: بررسی برای متن خطای پوچ/خالی موجود نیست
- شماره 37071776 :
espresso-coreفایل های.pomگواوا را جاسازی می کند - شماره 37062612 : NPE در حال
release() - شماره 37063389 : داشتن Guava و
espresso-webبه عنوان وابستگیandroidTestکامپایل نمی شود - شماره 37070533 : پشتیبانی از
NavigationViewرا در کتابخانه پشتیبانی طراحی اندروید اضافه کنید
- دونده
- رفع توانایی استفاده از
@UiThreadTestدر ترکیب با@Test(timeout = 123) - ثابت
-e notClassrunner arg -
-e logثابت برای پشتیبانی از مجموعههای آزمایشی JUnit3 و JUnit4، و همچنین رانرهایParameterizedوEnclosed - شماره 37663530 : قبل و بعد از هر روش تست منتظر بمانید تا تمام فعالیت ها به پایان برسد
- شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 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اگر سطح API 19 یا کمتر باشد،NullPointerExceptionپرتاب می کند.
-
سایر تغییرات قابل توجه
- باینری ها اکنون از طریق Google Maven منتشر می شوند
- کاهش اندازه فایلهای JAR
espresso-coreوespresso-web– وابستگیهای جاسازی شده اکنون ProGuard اعمال شده است - همه فایلهای
.aarاکنون شامل قوانین ProGuard میشوند - فایل های
proguard_library.cfgرا به مصنوعات منتشر شده اضافه کنید - رابط
Tapperدارای نسخه جدیدی ازsendTap()برای پیاده سازی است
کمک های خارجی
- اسپرسو
- دونده
- قوانین
اسپرسو 2.2.2، Runner/Rules 0.5 (22/02/2016، انتشار بیصدا)
ویژگی های جدید
- اسپرسو
- شماره 194253 : پشتیبانی از NavigationView را در کتابخانه طراحی پشتیبانی اندروید اضافه کنید
- بررسی هایی برای انیمیشن ها و انتقال های فعال اضافه شده است
- API جدید
ViewMatcher:withResourceName()
رفع اشکال
- اسپرسو
- شماره 195331 : هسته اسپرسو فایل های پوم گواوا را جاسازی می کند
- منبع بیکار شمارش خارج از اسپرسو کمک کرد
- قوانین
- شماره 187249 : NPE در
Intents.release()
- شماره 187249 : NPE در
- دونده
- شماره 196066: آرگومان
-e log trueدرAndroidJUnitRunnerتست واقعی را دور نمی زند - منتظر دیباگر در
onCreate()runner باشید - تمام حاشیه نویسی تست پشتیبانی شده از پلتفرم و به ATSL منتقل شد
- حذف ردیابی پشته در مورد هیچ JSBridge
-
AndroidAnnotatedBuilderرفع شد
- شماره 196066: آرگومان
سایر تغییرات قابل توجه
-
ActivityTestRule،UiThreadTestRule،IntentsTestRuleوServiceTestRuleاز نسخه بتا خارج شده اند - فایل تنظیمات سبک کد را برای قالب بندی کد یکنواخت اضافه کنید
اسپرسو 2.2.1، Runner/Rules 0.4 (2015-09-15)
ویژگی های جدید
- قوانین
- اضافه شدن سازنده جدید
IntentsTestRuleبرای سازگاری کامل باActivityTestRule
- اضافه شدن سازنده جدید
- دونده
- نصب multidex مورد ویژه برای سطوح 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
- اجرای همه آزمایشها به جز آزمایشهایی که در یک کلاس خاص هستند:
کمک های خارجی
- اسپرسو
- 157911 : برای نوع ورودی در یک شی
EditTextview matcher را اضافه کنید - 157912 : برای تطبیق متن خطا در یک شی
EditText، view matcher را اضافه کنید - 150674 : برای کشوهایی با جاذبه دلخواه، پشتیبانی از
DrawerActionsاضافه کنید - 150744 :
DrawerActionsدیگرparentListenerافشا نمی کند - 153303 : گرانش مشخص شده در چک های "کشو باز است یا بسته است"
- 157910 : کارخانجات باز و بستن
DrawerLayoutاضافه کنید
- 157911 : برای نوع ورودی در یک شی
رفع اشکال
- اسپرسو
-
ViewActions.closeSoftKeyboard()اکنون تضمین می کند که صفحه کلید نرم به طور کامل از بین رفته است - رفع مشکل همگامسازی با روش
Espresso.pressBack()Espresso در سطح API 21 و بالاتر - همگام سازی ثابت برای انیمیشن های بسته شدن صفحه کلید در سطح API 23
-
- قوانین
-
ServiceTestRuleدر سطح API 23 ثابت شد،startService()همیشه باید با یکIntentصریح فراخوانی شود.
-
- دونده
- پشتیبانی gradle شکسته
JaCoCoرفع شد - پشتیبانی از اشتراک گذاری تست شکسته ثابت شد
- وضعیت ناسازگار در دونده آزمایشی پس از وقفه های زمانی آزمون سبک
JUnit3رفع شد
- پشتیبانی gradle شکسته
سایر تغییرات قابل توجه
- اصلاحات جاوادوک و بهبود پیام خطا
- متدهای
suite()را نادیده بگیرید و هنگام استفاده از فیلترهای متد، خطاهای init را نادیده نگیرید
اسپرسو 2.2 / ATSL 0.3 (09-06-2015)
ویژگی های جدید
- اسپرسو وب 2.2
- پشتیبانی از
WebViewجدید
- پشتیبانی از
- اسپرسو هسته 2.2
- برای استفاده از dagger v2 مهاجرت کرد
- برای استفاده از hamcrest نسخه 1.3 مهاجرت کرد
- espresso-contrib 2.2
- بررسی های دسترسی
- پشتیبانی گرانشی
DrawerActions
- قوانین 0.3
-
DisableOnAndroidDebugقانون
-
- دونده 0.3
- از JUnit v4.10 به JUnit v4.12 ارتقا دهید
- برای استفاده از Hamcrest نسخه 1.3 مهاجرت کرد
رفع اشکال
-
DrawerActionsنشتParentListenerرفع شد - شکست فرضی اکنون به عنوان یک آزمون نادیده گرفته می شود تا یک آزمون شکست خورده
- موارد فعالیت نشت
MonitoringInstrumentationاز طریقExecutorServiceبرطرف کرد - برای فعالیت های یتیم که در مرحله متوقف شده گیر کرده بودند، رفع شد
-
Until.scrollFinished()را بهروزرسانی کنید تا اگر هیچ رویداد اسکرول ایجاد نشد، true را برگردانید. از 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 : یک API شبیه Mockito که با اجازه دادن به نویسندگان آزمون برای تأیید و نادیده گرفتن مقاصد خروجی، تست تعامل هرمتیک را ممکن میسازد.
-
IntentsTestRule:ActivityTestRuleرا گسترش می دهد، مقداردهی اولیه می کند و Espresso-Intent را در تست های رابط کاربری کاربردی منتشر می کند.
-
- اسپرسو هسته
-
ViewActions: قابلیت اضافه شده برای اجرای ادعاهای جهانی قبل از اجرای اقدامات. این برای سایر فریمورکهایی که در بالای اسپرسو ساخته میشوند مفید است تا وضعیت سلسلهمراتب نمایش را در زمانی که مجموعه آزمایشی اسپرسو موجود اجرا میشود، تأیید کند. -
ViewMatchers.withContentDescription()resIdاضافه بار
-
- قوانین
-
ActivityTestRule: این قانون تست عملکردی یک فعالیت را ارائه می دهد - حاشیه نویسی
UiThreadRuleوUiThreadTest: این قانون به روش تست حاشیه نویسی شده باUiThreadTestاجازه می دهد تا روی رشته اصلی برنامه (یا رشته UI) اجرا شود. -
ServiceTestRule: این قانون تست عملکردی یک سرویس را ارائه می دهد
-
- دونده
-
ApplicationLifecycleCallback: برگشت به تماس برای نظارت بر رویدادهای چرخه عمر برنامه - همه آرگومان های runner اکنون می توانند در فایل مانیفست اندروید با استفاده از تگ
<meta-data>نیز مشخص شوند.
-
- اتوماتاتور UIA
-
UiDevice.dumpWindowHierarchy()اکنون می تواند یکFileیا یکOutputStreamبپذیرد
-
رفع اشکال
- اسپرسو
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
falseرا برمیگرداند تا Hamcrest بتواند به مکاننمای بعدی ادامه دهد. -
NullPointerExceptionباPreferenceMatcherswithTitleدیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط Espresso Contrib استفاده شده است
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
- دونده
-
AndroidJUnit4اکنون از آزمایشات با فرضیات ناموفق صرف نظر می کند
-
- اتوماتاتور UIA
- برای جلوگیری از
StaleObjectExceptionتماشاگران را اجرا کنید
- برای جلوگیری از
سایر تغییرات قابل توجه
- وقتی نمیتوانیم متن را با رشتهای غیر لاتین تایپ کنیم، پیام خطای بهتری اضافه کنیم
UIAutomator 2.0 (12-03-2015)
UI Automator اکنون بر اساس Android Instrumentation ساخته شده است و میتوانید با استفاده از دستور ./gradlew connectedCheck آزمایشها را بسازید و اجرا کنید.
اسپرسو نسخه 2.0، تست رانر 0.1 (تاریخ انتشار: 19-12-2014)
شکستن تغییرات
- اسپرسو به فضای نام جدیدی منتقل شده است، از
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قرار دارد (همانطور که همیشه باید باشد)
-
- اختیاری (وابستگی به گواوا) از API عمومی حذف شده است تا از بسته بندی مجدد وابستگی گواوا پشتیبانی کند و از برخورد 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()با نماهایی مطابقت دارد که کل صفحه را اشغال می کنند، اما کمتر از 90٪ نمایش داده نمی شوند. - انجام فراخوانی عمل کش رفتن به
DrawerActions.openDrawer()دیگر منجر بهIdlingResourceTimeoutExceptionنمی شود
سایر تغییرات قابل توجه
- از ساختمان با Maven به Gradle تغییر مکان داد
- وابستگی های اسپرسو (Guava، Dagger، Hamcrest) را از مسیر خارج کرد تا از برخورد DEX جلوگیری شود.
- در هنگام ثبت و لغو ثبت منابع بلااستفاده، به موفقیت یا عدم موفقیت بازگشت
- پشتیبانی Lollipop:
message.recycle()در پشت یک رابط قرار دهید تا تغییرات مربوط به نسخه را در نظر بگیرید - تغییر سطح هدف SDK به 21 - بیشتر بر برنامه آزمایشی تأثیر می گذارد
نسخه 1.1 (تاریخ انتشار: 08/01/2014)
اسپرسو
-
swipeLeftوswipeRightViewActionsجدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
TypeTextAction: به تایپ متن در نمای از پیش متمرکز شده اجازه میدهد، که اضافه کردن متن را آسانتر میکند. - رفع اشکالات متعدد
کتابخانه مشارکت اسپرسو
- این کتابخانه جدید دارای ویژگی هایی است که مکمل اسپرسو هستند، اما بخشی از کتابخانه اصلی نیستند
-
DrawerActionsجدید برای عملکرد درDrawerLayout: وابستگی به کتابخانه پشتیبانی اندروید دارد، بنابراین ما آن را خارج از کتابخانه اصلی Espresso نگه می داریم
تست های نمونه
- این آزمایشها برای زندگی در همان بسته برنامه آزمایشی تغییر مکان دادهاند
- Maven POM برای حذف گواوا تکراری رفع شده است، بنابراین
mvn installباید اکنون کار کند
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 است
- هسته
- فعالیت های 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-J.Unit 1.1.0-beta01 (06-12-2018)
- هسته
- مصنوع پسوند core-ktx kotlin جدید! شامل یک API ActivityScenario.launchActivity مناسب برای kotlin است
- API جدید ActivityScenario برای راه اندازی فعالیت ها با اهداف سفارشی
- API جدید ActivityScenario برای دریافت نتیجه Activity
- ActivityScenario را قابل بسته شدن کنید
- اسپرسو
- باResourceNameMatcher و HumanReadables را تغییر دهید تا با API 28 سازگار باشد.
- توضیحات ReplaceTextAction را بهروزرسانی کنید تا stringToBeSet را در بر بگیرد
- پشتیبانی از اسپرسو در حالت Robolectric paused looper.
- JUnit
- API جدید ActivityScenarioRule، برای راهاندازی خودکار و بستن یک Activity در راهاندازی آزمایشی و حذف
- مصنوع جدید پسوند junit-ktx kotlin! شامل یک API ActivityScenarioRule مناسب برای kotlin است
- دونده
- پکیج -e و -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 را روی 14 و targetSdkVersion را روی 28 تنظیم کنید
- اسپرسو
- برای کار با انواع غیر رشته ای، با ContentDescription رفع کنید
- برای استفاده از اسپرسو در روبولکتریک پشتیبانی اضافه کنید
- شماره 72798625 : اسپرسو ViewMatchers.withText وقتی textAllCaps فعال است کار نمی کند
- برای تزریق توالی رویدادهای حرکتی، پشتیبانی اضافه کنید
- مقاصد
- برای بازیابی لیست مقاصد، API بتا را اضافه کنید. برای استفاده با ادعاهای حقیقت جدید در نظر گرفته شده است
- دونده
- پشتیبانی از برنامه های فوری را اضافه کنید
- 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 نه. یک پرچم جدید ارکستراتورDebug برای اشکال زدایی خود ارکستر اضافه شد
- هسته
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- بازیابی زمینه: ApplicationProvider
- کنترل چرخه حیات فعالیت: ActivityScenario (بتا)
- سازندگان برای MotionEvent، PackageInfo
- کلاس کاربردی Parceables
- مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
- حقیقت
- مصنوع جدید! شامل موضوعات حقیقت سفارشی برای Notification، Intent، Bundle، Parcelable و MotionEvent
- JUnit
- مصنوع جدید! شامل JUnit runner class 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 (2018-04-16)
- اسپرسو
- شکستن تغییر API:
- در شماره 64062890 متوجه شدیم که از Guava Optional در API عمومی خود استفاده می کردیم. این نظارت وحشتناکی از طرف ما بود. در نتیجه، یک تغییر API عمومی در این نسخه برای رسیدگی به این مشکل وجود دارد. ما یک بسته بندی زشت را در اطراف کلاس Guava Optional معرفی کردیم، به نام EspressoOptional که در فضای نام "android.support.test.espresso.util" زندگی می کند. توسعهدهندگانی که از Guava Optional API لو رفته استفاده میکردند، باید واردات و مراجع خود را برای استفاده از EspressoOptional در طول بهروزرسانی به این نسخه جدید تغییر دهند. متاسفم برای ناراحتی که ممکن است ایجاد کند.
- APIهای onView() و onData() اکنون برای جلوگیری از خطاها @CheckReturnValue علامت گذاری شده اند.
- فایل POM هسته اسپرسو را ثابت کرد تا وابستگی "قوانین" را ایجاد نکند، در عوض POM با هدف اسپرسو آن را بکشد. این باید یک تغییر NoOp برای توسعه دهندگان باشد زیرا اسپرسو-نیت ها بدون هسته اسپرسو قابل استفاده نیستند.
- شماره 65486414 : اسپرسو فاقد وابستگی به گواوا است
- شماره 65576174 : Espresso IdlingResourceRegistry.sync باعث شکست تست دوم می شود
- شماره 65568629 : Espresso.onIdle از IdlingRegistry استفاده نمی کند
- شماره 69333598 : اسپرسو 3.0.1 با play-services-auth:11.6.0 در ماژول کتابخانه اندروید ناسازگار است.
- شماره 64062890 : نوع اختیاری داخلی توسط رابط AdapterViewProtocol آشکار شد
- شماره 64091847 : اسپرسو 3.0.0 نباید به دونده آزمایشی وابسته باشد
- شماره 73722050 : کلاسهای بستههای espresso-contrib 3.0.2-alpha1 android.arch.{lifecycle/core}
- شکستن تغییر API:
- اسپرسو ریموت
- این یک مصنوع کاملاً جدید است. ما همه عملکردهای چند فرآیندی اسپرسو را خارج از مصنوع هسته اسپرسو جدا کردیم. این تمیزتر است و باید اندازه کلی هسته اسپرسو و تعداد روش آن را به میزان قابل توجهی کاهش دهد.
- دونده
- اگر برای تراکنش بایندر بزرگ است، رد پشته را کوتاه کنید. از آنجایی که AJUR باید خرابی ها را از طریق IPC بایندر به AM گزارش کند، باید مطمئن شویم که از حد تراکنش Binder - که 1 مگابایت در هر فرآیند است - تجاوز نمی کنیم.
- شماره 65828576 : خرابی TestRequestBuilder هنگام اجرای تست در کلاس با @Ignore
- شماره 37057596 : ما با شکست در @BeforeClass مقابله نمی کنیم
- قوانین
- اطمینان حاصل کنید که پس از تغییرات چرخه عمر، یک مرجع در مورد فعالیت مورد آزمایش منتشر کنید. در طول مدت آزمایش، اکنون میتوانید Activity را مستقیماً با استفاده از مرجع بدستآمده از #getActivity() دستکاری کنید، اگر Activity به پایان برسد و مجدداً راهاندازی شود، مرجع بازگشتی توسط #getActivity() اکنون همیشه به نمونه فعلی Activity اشاره میکند. .
- شماره 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است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFileAndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
pm clear context.getPackageName()وpm clear targetContext.getPackageName()را در بین فراخوانهای آزمایشی اجرا کند، پرچم-e clearPackageDataارسال کنید. توجه داشته باشید، متن دستور clear، App under test context است. - ثابت - هنگام اجرای یک تست خالی، با نام مستعار. نه @Test در داخل هدف، نتیجه آزمایش با حالت قدیمی متفاوت است.
- شماره 72758547 : ارکستراتور آزمایشی باعث میشود که دادههای پوشش Jacoco ناقص باشد، فقط آخرین دادههای اجرای آزمایشی را دارد.
- شماره 67916042 : Android Test Orchestrator: اجرا در هنگام خرابی Process به دلیل OutOfMemory متوقف شد
- شماره 77752735 : ارکستراتور برای TransactionTooLargeException از کار می افتد
- شماره 77549481 : ارکستراتور آزمون باید بعد از هر آزمون "بعد از ظهر" را اجرا کند
- پاس
Espresso 3.0.2-alpha1، Runner 1.0.2-alpha1، Rules 1.0.2-alpha1، AndroidTestOrchestrator 1.0.2-alpha1 (05-12-2017)
اسپرسو
-
Intentsاکنون پاسخی قابل فراخوانی دارد که به آزمایشها اجازه میدهد بعد از گرفتن یک هدف شلیک شده اما قبل از برگرداندن یک شیInstrumentation.ActivityResultاجرا شوند.
-
دونده
مانیتور maven artifact
com.android.support.test:monitor:<version>را برای کاربرانی که بدون اجرای آزمایشی و ویژگیهای JUnitMonitoringInstrumentationنیاز دارند تقسیم کنید.اگر از
com.android.support.test:runner:<version>استفاده می کنید، همه چیز همانطور که انتظار می رود کار می کند، زیرا Gradle به طور خودکار ماژولmonitorرا به عنوان یک وابستگی به ماژولrunnerمی کشد.پرچم
newRunListenerOrderModeاضافه شد. وقتی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)
اسپرسو
- یک گزینه
IdlingPolicyبرای سرکوبonTimeout()زمانی که یک step debugger به VM متصل است اضافه کرد. - مسائل 64024656 ، 64247586 و 64525881 : خرابیها را برای بارگیری ناموفق کلاس گزارش نکنید، مگر اینکه کاربر کلاسهای خاصی را با گنجاندن آرگومان اجراکننده کلاس
-eبارگیری کند. - شماره 64877246 : کلاس های گمشده را به فایل JAR منابع اضافه کنید.
- یک گزینه
دونده
- منطق
ShardingFilterساده شده. - شماره 65025743 : فیلتر
@RequiresDeviceاکنون از شبیه سازهای FTL پشتیبانی می کند.
- منطق
AndroidTestOrchestrator
- خرابی های گزارش را تکرار نکنید. هنگامی که یک فرآیند تست پس از شکست از کار می افتد، اکنون فقط یک شکست برای آزمایش گزارش می شود.
- Javadoc برای ارکستراتور ثابت شد.
- اکنون در صورت خرابی فرآیند از راه دور، آزمایشها از دست رفته است.
- اکنون موارد آزمایش نادیده گرفته شده را کنترل می کند.
- اکنون موارد آزمایش نادیده گرفته شده را از پاورقی برای مطابقت با نتایج قدیمی حذف می کند.
- رفع مشکلات مجوز زمان اجرا گزارشهای آزمایش اکنون روی کارت SD در Android نسخه 7.0 (سطح API 24) و بالاتر نوشته میشوند.
Espresso 3.0.0، Runner 1.0.0، Rules 1.0.0، AndroidTestOrchestrator 1.0.0 (25-07-2017، اعلامیه )
شکستن تغییرات
- تمام مصنوعات
- کاهش پشتیبانی از سطوح API کمتر از 15 – با این حال، حداقل SDK همچنان به سطح 9 API اشاره می کند تا به کاربران زمان برای ارتقاء بدهد.
- اسپرسو
- کلاس منسوخ شده
android.support.test.espresso.contrib.CountingIdlingResourceحذف شده و بهandroid.support.test.espresso.idling.CountingIdlingResourceمنتقل شده است.- به جای
registerIdlingResources()ازgetInstance().register()استفاده کنید
- به جای
- Guava اکنون به یک فضای نام "داخلی" متفاوت منتقل شده است - اگر به طور تصادفی از Guava API از طریق فضاهای نام Espresso استفاده می کنید، ممکن است شکستگی ها را مشاهده کنید.
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
.core.deps.guava.) - نسخه کتابخانه پشتیبانی خود را به 25.4.0 یا بالاتر ارتقا دهید
- هرگونه ارجاع به گواوا سایه دار را حذف کنید (
- کلاس منسوخ شده
مسائل شناخته شده
- AndroidTestOrchestrator
- آرگومان های اجراکننده
-e numShardsو-e shardIndexدر حال حاضر پشتیبانی نمی شوند - تست های پارامتری در حال حاضر پشتیبانی نمی شوند
- آرگومان های اجراکننده
ویژگی های جدید
- اسپرسو
- پشتیبانی از اسپرسو چند فرآیندی جدید در API 26 برای
espresso-coreوespresso-web، اما نهespresso-contrib -
IdlingRegistryAPI سبک وزن جدید- منتشر شده به عنوان بخشی از
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مطابقت دارد
-
- روشهای عمل مشاهده جدید:
- عملکرد مشاهده
scrollTo()پیشرفته برای کار با نوادگانListView -
repeatedlyUntil()-ViewActionداده شده را روی یک view انجام می دهد تا زمانی که view باViewMatchersمورد نظر مطابقت داشته باشد.
- عملکرد مشاهده
- روش های جدید اسپرسو:
-
pressBackUnconditionally()– شبیه بهpressBack()است اما در هنگام پیمایش Espresso استثنایی ایجاد نمی کند -
noActivity()– نیاز به انتظار برای یک فعالیت قبل از انجامViewActionیاViewAssertionرا حذف می کند. -
onIdle()- رشته اصلی را تا زمانی که برنامه بیکار شود حلقه می کند -
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– امکان عبور از بارگذارهای کلاس را با استفاده از runner args فراهم می کند -
-e filter– اضافه کردن پشتیبانی برای فیلترهای JUnit سفارشی که با استفاده از runner args مشخص شوند -
-e runnerBuilder– به توسعهدهندگان اجازه میدهد تا پیادهسازیهای خود را ازRunnerBuilderارائه دهند که میتواند تعیین کند که آیا و چگونه میتوانند در برابر یک کلاس خاص اجرا شوند یا خیر.
-
- قوانین
-
ProviderTestRule– API جدید برای آزمایش اشیاءContentProvider -
getActivityResult()وActivityResultMatchers– API جدید برای بازیابی نتیجه فعالیت فعالیتی کهsetResult()نامیده است.
-
- AndroidTestOrchestrator
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
- خرابیهای برنامه، سازهای دونده را از بین میبرند، اما نه ارکستراتور، و به مجموعه آزمایشی شما اجازه میدهد ادامه پیدا کند.
- به نصب APK ارکستراتور نیاز دارد -
'com.android.support.test:orchestrator:1.0.0' - نسخه 1.0 فقط یک رابط خط فرمان دارد. ادغام با Android Studio و Firebase Test Labs برنامه ریزی شده است
- Android Test Orchestrator روش جدیدی برای جمع آوری و اجرای تست ها با تاکید بر درستی و جداسازی ارائه می دهد. ارکستراتور یک فرآیند ساز مستقل است که برای هر آزمون یک فرآیند دونده ساز را ایجاد می کند و نتایج را جمع آوری می کند.
رفع اشکال
- اسپرسو
- بهبود هماهنگ سازی نمای ریشه برای کاهش قابل توجه پوسته پوسته شدن
- خرابی
IdlingResourceRegistryرا برطرف کنید - همگام سازی بهتر در برابر اشیاء
IdlingResource - شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 37103280 : اسپرسو باید قوانین مصرف کننده ProGuard را ارسال کند تا مصرف کنندگان مجبور به اضافه کردن آنها نباشند
- شماره 37094726 : Espresso Intents حاوی برچسب کاربردی غیر ضروری است
- شماره 37093953 : اسپرسو: بررسی برای متن خطای پوچ/خالی موجود نیست
- شماره 37071776 :
espresso-coreفایل های.pomگواوا را جاسازی می کند - شماره 37062612 : NPE در حال
release() - شماره 37063389 : داشتن Guava و
espresso-webبه عنوان وابستگیandroidTestکامپایل نمی شود - شماره 37070533 : پشتیبانی از
NavigationViewرا در کتابخانه پشتیبانی طراحی اندروید اضافه کنید
- دونده
- رفع توانایی استفاده از
@UiThreadTestدر ترکیب با@Test(timeout = 123) - ثابت
-e notClassrunner arg -
-e logثابت برای پشتیبانی از مجموعههای آزمایشی JUnit3 و JUnit4، و همچنین رانرهایParameterizedوEnclosed - شماره 37663530 : قبل و بعد از هر روش تست منتظر بمانید تا تمام فعالیت ها به پایان برسد
- شماره 37132680 : اسپرسو قبل از انجام عمل بعدی منتظر نمی ماند تا ایجاد دیالوگ کامل شود.
- شماره 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اگر سطح API 19 یا کمتر باشد،NullPointerExceptionپرتاب می کند.
-
سایر تغییرات قابل توجه
- باینری ها اکنون از طریق Google Maven منتشر می شوند
- کاهش اندازه فایلهای JAR
espresso-coreوespresso-web– وابستگیهای جاسازی شده اکنون ProGuard اعمال شده است - همه فایلهای
.aarاکنون شامل قوانین ProGuard میشوند - فایل های
proguard_library.cfgرا به مصنوعات منتشر شده اضافه کنید - رابط
Tapperدارای نسخه جدیدی ازsendTap()برای پیاده سازی است
کمک های خارجی
- اسپرسو
- دونده
- قوانین
اسپرسو 2.2.2، Runner/Rules 0.5 (22/02/2016، انتشار بیصدا)
ویژگی های جدید
- اسپرسو
- شماره 194253 : پشتیبانی از NavigationView را در کتابخانه طراحی پشتیبانی اندروید اضافه کنید
- بررسی هایی برای انیمیشن ها و انتقال های فعال اضافه شده است
- API جدید
ViewMatcher:withResourceName()
رفع اشکال
- اسپرسو
- شماره 195331 : هسته اسپرسو فایل های پوم گواوا را جاسازی می کند
- منبع بیکار شمارش خارج از اسپرسو کمک کرد
- قوانین
- شماره 187249 : NPE در
Intents.release()
- شماره 187249 : NPE در
- دونده
- شماره 196066: آرگومان
-e log trueدرAndroidJUnitRunnerتست واقعی را دور نمی زند - منتظر دیباگر در
onCreate()runner باشید - تمام حاشیه نویسی تست پشتیبانی شده از پلتفرم و به ATSL منتقل شد
- حذف ردیابی پشته در مورد هیچ JSBridge
-
AndroidAnnotatedBuilderرفع شد
- شماره 196066: آرگومان
سایر تغییرات قابل توجه
-
ActivityTestRule،UiThreadTestRule،IntentsTestRuleوServiceTestRuleاز نسخه بتا خارج شده اند - فایل تنظیمات سبک کد را برای قالب بندی کد یکنواخت اضافه کنید
اسپرسو 2.2.1، Runner/Rules 0.4 (2015-09-15)
ویژگی های جدید
- قوانین
- اضافه شدن سازنده جدید
IntentsTestRuleبرای سازگاری کامل باActivityTestRule
- اضافه شدن سازنده جدید
- دونده
- نصب multidex مورد ویژه برای سطوح 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
- اجرای همه آزمایشها به جز آزمایشهایی که در یک کلاس خاص هستند:
کمک های خارجی
- اسپرسو
- 157911 : برای نوع ورودی در یک شی
EditTextview matcher را اضافه کنید - 157912 : برای تطبیق متن خطا در یک شی
EditText، view matcher را اضافه کنید - 150674 : برای کشوهایی با جاذبه دلخواه، پشتیبانی از
DrawerActionsاضافه کنید - 150744 :
DrawerActionsدیگرparentListenerافشا نمی کند - 153303 : گرانش مشخص شده در چک های "کشو باز است یا بسته است"
- 157910 : کارخانجات باز و بستن
DrawerLayoutاضافه کنید
- 157911 : برای نوع ورودی در یک شی
رفع اشکال
- اسپرسو
-
ViewActions.closeSoftKeyboard()اکنون تضمین می کند که صفحه کلید نرم به طور کامل از بین رفته است - رفع مشکل همگامسازی با روش
Espresso.pressBack()Espresso در سطح API 21 و بالاتر - همگام سازی ثابت برای انیمیشن های بسته شدن صفحه کلید در سطح API 23
-
- قوانین
-
ServiceTestRuleدر سطح API 23 ثابت شد،startService()همیشه باید با یکIntentصریح فراخوانی شود.
-
- دونده
- پشتیبانی gradle شکسته
JaCoCoرفع شد - پشتیبانی از اشتراک گذاری تست شکسته ثابت شد
- وضعیت ناسازگار در دونده آزمایشی پس از وقفه های زمانی آزمون سبک
JUnit3رفع شد
- پشتیبانی gradle شکسته
سایر تغییرات قابل توجه
- اصلاحات جاوادوک و بهبود پیام خطا
- متدهای
suite()را نادیده بگیرید و هنگام استفاده از فیلترهای متد، خطاهای init را نادیده نگیرید
اسپرسو 2.2 / ATSL 0.3 (09-06-2015)
ویژگی های جدید
- اسپرسو وب 2.2
- پشتیبانی از
WebViewجدید
- پشتیبانی از
- اسپرسو هسته 2.2
- برای استفاده از dagger v2 مهاجرت کرد
- برای استفاده از hamcrest نسخه 1.3 مهاجرت کرد
- espresso-contrib 2.2
- بررسی های دسترسی
- پشتیبانی گرانشی
DrawerActions
- قوانین 0.3
-
DisableOnAndroidDebugقانون
-
- دونده 0.3
- از JUnit v4.10 به JUnit v4.12 ارتقا دهید
- برای استفاده از Hamcrest نسخه 1.3 مهاجرت کرد
رفع اشکال
-
DrawerActionsنشتParentListenerرفع شد - شکست فرضی اکنون به عنوان یک آزمون نادیده گرفته می شود تا یک آزمون شکست خورده
- موارد فعالیت نشت
MonitoringInstrumentationاز طریقExecutorServiceبرطرف کرد - برای فعالیت های یتیم که در مرحله متوقف شده گیر کرده بودند، رفع شد
-
Until.scrollFinished()را بهروزرسانی کنید تا اگر هیچ رویداد اسکرول ایجاد نشد، true را برگردانید. از 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 : یک API شبیه Mockito که با اجازه دادن به نویسندگان آزمون برای تأیید و نادیده گرفتن مقاصد خروجی، تست تعامل هرمتیک را ممکن میسازد.
-
IntentsTestRule:ActivityTestRuleرا گسترش می دهد، مقداردهی اولیه می کند و Espresso-Intent را در تست های رابط کاربری کاربردی منتشر می کند.
-
- اسپرسو هسته
-
ViewActions: قابلیت اضافه شده برای اجرای ادعاهای جهانی قبل از اجرای اقدامات. این برای سایر فریمورکهایی که در بالای اسپرسو ساخته میشوند مفید است تا وضعیت سلسلهمراتب نمایش را در زمانی که مجموعه آزمایشی اسپرسو موجود اجرا میشود، تأیید کند. -
ViewMatchers.withContentDescription()resIdاضافه بار
-
- قوانین
-
ActivityTestRule: این قانون تست عملکردی یک فعالیت را ارائه می دهد - حاشیه نویسی
UiThreadRuleوUiThreadTest: این قانون به روش تست حاشیه نویسی شده باUiThreadTestاجازه می دهد تا روی رشته اصلی برنامه (یا رشته UI) اجرا شود. -
ServiceTestRule: این قانون تست عملکردی یک سرویس را ارائه می دهد
-
- دونده
-
ApplicationLifecycleCallback: برگشت به تماس برای نظارت بر رویدادهای چرخه عمر برنامه - همه آرگومان های runner اکنون می توانند در فایل مانیفست اندروید با استفاده از تگ
<meta-data>نیز مشخص شوند.
-
- اتوماتاتور UIA
-
UiDevice.dumpWindowHierarchy()اکنون می تواند یکFileیا یکOutputStreamبپذیرد
-
رفع اشکال
- اسپرسو
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
falseرا برمیگرداند تا Hamcrest بتواند به مکاننمای بعدی ادامه دهد. -
NullPointerExceptionباPreferenceMatcherswithTitleدیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط Espresso Contrib استفاده شده است
- اگر ستون پیدا نشد، تطبیق مکاننما اکنون
- دونده
-
AndroidJUnit4اکنون از آزمایشات با فرضیات ناموفق صرف نظر می کند
-
- اتوماتاتور UIA
- برای جلوگیری از
StaleObjectExceptionتماشاگران را اجرا کنید
- برای جلوگیری از
سایر تغییرات قابل توجه
- وقتی نمیتوانیم متن را با رشتهای غیر لاتین تایپ کنیم، پیام خطای بهتری اضافه کنیم
UIAutomator 2.0 (12-03-2015)
UI Automator اکنون بر اساس Android Instrumentation ساخته شده است و میتوانید با استفاده از دستور ./gradlew connectedCheck آزمایشها را بسازید و اجرا کنید.
اسپرسو نسخه 2.0، تست رانر 0.1 (تاریخ انتشار: 19-12-2014)
شکستن تغییرات
- اسپرسو به فضای نام جدیدی منتقل شده است، از
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قرار دارد (همانطور که همیشه باید باشد)
-
- اختیاری (وابستگی به گواوا) از API عمومی حذف شده است تا از بسته بندی مجدد وابستگی گواوا پشتیبانی کند و از برخورد 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()با نماهایی مطابقت دارد که کل صفحه را اشغال می کنند، اما کمتر از 90٪ نمایش داده نمی شوند. - انجام فراخوانی عمل کش رفتن به
DrawerActions.openDrawer()دیگر منجر بهIdlingResourceTimeoutExceptionنمی شود
سایر تغییرات قابل توجه
- از ساختمان با Maven به Gradle تغییر مکان داد
- وابستگی های اسپرسو (Guava، Dagger، Hamcrest) را از مسیر خارج کرد تا از برخورد DEX جلوگیری شود.
- در هنگام ثبت و لغو ثبت منابع بلااستفاده، به موفقیت یا عدم موفقیت بازگشت
- پشتیبانی Lollipop:
message.recycle()در پشت یک رابط قرار دهید تا تغییرات مربوط به نسخه را در نظر بگیرید - تغییر سطح هدف SDK به 21 - بیشتر بر برنامه آزمایشی تأثیر می گذارد
نسخه 1.1 (تاریخ انتشار: 08/01/2014)
اسپرسو
-
swipeLeftوswipeRightViewActionsجدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
TypeTextAction: به تایپ متن در نمای از پیش متمرکز شده اجازه میدهد، که اضافه کردن متن را آسانتر میکند. - رفع اشکالات متعدد
کتابخانه مشارکت اسپرسو
- این کتابخانه جدید دارای ویژگی هایی است که مکمل اسپرسو هستند، اما بخشی از کتابخانه اصلی نیستند
-
DrawerActionsجدید برای عملکرد درDrawerLayout: وابستگی به کتابخانه پشتیبانی اندروید دارد، بنابراین ما آن را خارج از کتابخانه اصلی Espresso نگه می داریم
تست های نمونه
- این آزمایشها برای زندگی در همان بسته برنامه آزمایشی تغییر مکان دادهاند
- Maven POM برای حذف گواوا تکراری رفع شده است، بنابراین
mvn installباید اکنون کار کند