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
است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFile
AndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
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
-
IdlingRegistry
API سبک وزن جدید- منتشر شده به عنوان بخشی از
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 notClass
runner 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 : برای نوع ورودی در یک شی
EditText
view 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
باPreferenceMatchers
withTitle
دیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط 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
وswipeRight
ViewActions
جدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
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
است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFile
AndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
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
-
IdlingRegistry
API سبک وزن جدید- منتشر شده به عنوان بخشی از
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 notClass
runner 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 : برای نوع ورودی در یک شی
EditText
view 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
باPreferenceMatchers
withTitle
دیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط 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
وswipeRight
ViewActions
جدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
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
است. توجه داشته باشید، این تنها زمانی پشتیبانی می شود که در حالت ایزوله اجرا شود. همچنین، نمی توان آن را همراه با پرچمcoverageFile
AndroidJUnitRunner استفاده کرد. از آنجایی که فایل های پوشش تولید شده روی یکدیگر بازنویسی می کنند. - اگر میخواهید که ارکستراتور دستورات
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
-
IdlingRegistry
API سبک وزن جدید- منتشر شده به عنوان بخشی از
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 notClass
runner 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 : برای نوع ورودی در یک شی
EditText
view 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
باPreferenceMatchers
withTitle
دیگر رخ نمی دهد - لغو ثبت منبع بیکار دیگر باعث نمی شود که اسپرسو فکر کند ما منابع بیکاری شلوغ داریم
- نسخه به روز شده توضیحات پشتیبانی که توسط 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
وswipeRight
ViewActions
جدید - پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره مورد نظر را که اسپرسو باید بر روی آن عملیات را اجرا کند، میدهد.
- بهبودهایی در
TypeTextAction
: به تایپ متن در نمای از پیش متمرکز شده اجازه میدهد، که اضافه کردن متن را آسانتر میکند. - رفع اشکالات متعدد
کتابخانه مشارکت اسپرسو
- این کتابخانه جدید دارای ویژگی هایی است که مکمل اسپرسو هستند، اما بخشی از کتابخانه اصلی نیستند
-
DrawerActions
جدید برای عملکرد درDrawerLayout
: وابستگی به کتابخانه پشتیبانی اندروید دارد، بنابراین ما آن را خارج از کتابخانه اصلی Espresso نگه می داریم
تست های نمونه
- این آزمایشها برای زندگی در همان بسته برنامه آزمایشی تغییر مکان دادهاند
- Maven POM برای حذف گواوا تکراری رفع شده است، بنابراین
mvn install
باید اکنون کار کند