بایگانی یادداشت نسخه آزمایشی، آرشیو یادداشت نسخه آزمایشی، بایگانی یادداشت نسخه آزمایشی

AndroidX Test Espresso 3.1.1، Runner 1.1.1، Rules 1.1.1، Monitor 1.1.1 AndroidTestOrchestrator 1.1.1، Core 1.1.0، Truth 1.1.0، JUnit 1.1.0 (2018-12-13)

این نسخه پایدار AndroidX Test 1.1.0 است.

  • هسته
    • سناریوی فعالیت را طوری تنظیم کنید که از فعالیت‌هایی که فعالیت دیگری را آغاز می‌کنند، پشتیبانی کند.

AndroidX Test Espresso 3.1.1-beta01، Runner 1.1.1-beta01، Rules 1.1.1-beta01، Monitor 1.1.1-beta01، AndroidTestOrchestrator 1.1.1-beta01، Core 1.1.0-beta01، Truth 1.1.0-beta01، JUnit 1.1.0-beta01 (2018-12-06)

  • هسته
    • مصنوع جدید افزونه کاتلین core-ktx! شامل یک API ActivityScenario.launchActivity سازگار با کاتلین است.
    • API جدید ActivityScenario برای راه‌اندازی فعالیت‌ها با اهداف سفارشی
    • API جدید ActivityScenario برای دریافت نتیجه یک فعالیت
    • سناریوی فعالیت را قابل بستن کنید
  • اسپرسو
    • withResourceNameMatcher و HumanReadables را طوری تغییر دهید که با API 28 سازگار باشند.
    • توضیحات ReplaceTextAction را به‌روزرسانی کنید تا stringToBeSet را نیز شامل شود.
    • پشتیبانی از Espresso در حالت looper متوقف شده Robolectric.
  • جی‌یونیت
    • API جدید ActivityScenarioRule، برای راه‌اندازی و بستن خودکار یک فعالیت در هنگام راه‌اندازی آزمایشی و تجزیه و تحلیل
    • افزونه جدید junit-ktx kotlin! شامل یک API ActivityScenarioRule سازگار با کاتلین
  • دونده
    • ایجاد ثبات در رفتار ‎-e package‎ و ‎-e testFile‎ هنگام دریافت بسته‌ها
  • حقیقت
    • APIهای bool، parcelable و parcelableAsType BundleSubject را اضافه کنید

AndroidX Test Espresso 3.1.0، Runner 1.1.0، Rules 1.1.0، Monitor 1.1.0 AndroidTestOrchestrator 1.1.0، Core 1.0.0 Truth 1.0.0، JUnit 1.0.0 (2018-10-24)

  • همه
    • مقدار minSdkVersion را روی ۱۴ و مقدار targetSdkVersion را روی ۲۸ تنظیم کنید.
  • اسپرسو
    • رفع مشکل withContentDescription برای کار با انواع غیر رشته‌ای
    • اضافه شدن پشتیبانی برای استفاده از Espresso در Robolectric
    • مشکل ۷۲۷۹۸۶۲۵ : Espresso ViewMatchers.withText وقتی textAllCaps فعال باشد، کار نمی‌کند.
    • اضافه کردن پشتیبانی برای تزریق دنباله ای از رویدادهای حرکتی
  • اهداف
    • اضافه شدن رابط برنامه‌نویسی کاربردی بتا برای بازیابی لیست اهداف. در نظر گرفته شده برای استفاده با ادعاهای حقیقت جدید.
  • دونده
    • اضافه شدن پشتیبانی از اپلیکیشن‌های فوری
    • androidx.test.runner.AndroidJUnit4 را منسوخ کنید و آن را با androidx.test.ext.junit.runners.AndroidJUnit4 جایگزین کنید.
  • مانیتور
    • androidx.test.InstrumentationRegistry را منسوخ کنید و آن را با androidx.test.platform.app.InstrumentationRegistry و androidx.test.core.app.ApplicationProvider جایگزین کنید.
  • AndroidTestOrchestrator
    • فقط در صورتی که هر دو آرگومان «پوشش» و «پوشش‌فایل‌پث» ارسال شده باشند، مدیریت پوشش هماهنگ‌کننده را فعال کنید.
    • فقط زمانی که ‎-debug تنظیم شده باشد، منتظر اشکال‌زدا باشید، اما نه برای فهرست کردن موارد تست ATO. یک پرچم جدید orchestratorDebug برای اشکال‌زدایی خود orchestrator اضافه شد.
  • هسته
    • مصنوع جدید! شامل API های جدیدی است که از تست های محلی و روی دستگاه برای موارد زیر پشتیبانی می کند:
      • بازیابی زمینه: ApplicationProvider
      • کنترل چرخه حیات فعالیت: سناریوی فعالیت (بتا)
      • سازندگان MotionEvent، PackageInfo
      • کلاس کاربردی Parceables
  • حقیقت
    • مصنوع جدید! شامل موضوعات حقیقت سفارشی برای اعلان، قصد، بسته، بسته‌بندی و MotionEvent است
  • جی‌یونیت
    • مصنوع جدید! شامل کلاس اجراکننده JUnit به نام androidx.test.ext.junit.runners.AndroidJUnit4 است که از تست‌های محلی و روی دستگاه پشتیبانی می‌کند.

اسپرسو ۳.۰.۲-بتا۱، رانر ۱.۰.۲-بتا۱، رول‌ها ۱.۰.۲-بتا۱، مانیتور ۱.۰.۲-بتا۱، اندرویدتِست‌ارچستریتور ۱.۰.۲-بتا۱ (۲۰۱۸-۰۴-۱۶)

  • اسپرسو
    • تغییر API در حال رخ دادن:
      • در شماره ۶۴۰۶۲۸۹۰ به ما اطلاع داده شد که ما در API عمومی خود از Guava Optional استفاده می‌کردیم. این یک اشتباه فاحش از جانب ما بود. در نتیجه، در این نسخه یک تغییر API عمومی مهم برای رفع این مشکل ایجاد شده است. ما یک پوشش زشت پیرامون کلاس Guava Optional به نام EspressoOptional معرفی کردیم که تحت فضای نام "android.support.test.espresso.util" قرار دارد. توسعه‌دهندگانی که از API افشا شده Guava Optional استفاده می‌کردند، باید در طول به‌روزرسانی به این نسخه جدید، importها و ارجاعات خود را برای استفاده از EspressoOptional تغییر دهند. بابت ناراحتی که ممکن است ایجاد شود، عذرخواهی می‌کنیم.
    • APIهای onView() و onData() اکنون برای جلوگیری از خطا با @CheckReturnValue علامت‌گذاری شده‌اند.
    • فایل POM espresso-core را طوری اصلاح کردیم که وابستگی "rules" را دریافت نکند، در عوض POM espresso-intents آن را دریافت کند. این باید یک تغییر NoOp برای توسعه‌دهندگان باشد زیرا espresso-intents بدون espresso-core قابل استفاده نیست.
    • شماره 65486414 : اسپرسو بدون وابستگی به گواوا
    • مشکل ۶۵۵۷۶۱۷۴ : Espresso IdlingResourceRegistry.sync باعث عدم موفقیت در تست دوم می‌شود
    • مشکل ۶۵۵۶۸۶۲۹ : Espresso.onIdle از IdlingRegistry استفاده نمی‌کند
    • مشکل ۶۹۳۳۳۵۹۸ : espresso 3.0.1 با play-services-auth:11.6.0 در ماژول کتابخانه اندروید سازگار نیست.
    • شماره 64062890 : نوع اختیاری داخلی که توسط رابط AdapterViewProtocol نمایش داده می‌شود
    • شماره ۶۴۰۹۱۸۴۷ : اسپرسو ۳.۰.۰ نباید به اجراکننده تست وابسته باشد
    • شماره ۷۳۷۲۲۰۵۰ : بسته‌های espresso-contrib 3.0.2-alpha1 کلاس‌های android.arch.{lifecycle/core}
  • اسپرسو-کنترل از راه دور
    • این یک محصول کاملاً جدید است. ما تمام قابلیت‌های چند فرآیندی اسپرسو را به جز محصول اسپرسو-کور از هم جدا کردیم. این روش تمیزتر است و باید اندازه کلی و تعداد متدهای اسپرسو-کور را به میزان قابل توجهی کاهش دهد.
  • دونده
    • اگر حجم تراکنش‌های binder خیلی زیاد است، مسیر پشته را کوتاه کنید. از آنجایی که AJUR باید خرابی‌ها را از طریق IPC binder به AM گزارش دهد، باید مطمئن شویم که از محدودیت تراکنش‌های Binder - که ۱ مگابایت برای هر فرآیند است - تجاوز نمی‌کنیم.
    • مشکل ۶۵۸۲۸۵۷۶ : خطای TestRequestBuilder هنگام اجرای تست در کلاس با @Ignore
    • شماره ۳۷۰۵۷۵۹۶ : ما در @BeforeClass خطاها را مدیریت نمی‌کنیم
  • قوانین
    • اطمینان حاصل کنید که پس از تغییرات چرخه حیات، یک ارجاع به فعالیت تحت آزمایش منتشر می‌شود. اکنون در طول مدت آزمایش، می‌توان فعالیت را مستقیماً با استفاده از ارجاع به دست آمده از #getActivity() دستکاری کرد. اگر فعالیت تمام و دوباره راه‌اندازی شود، ارجاعی که توسط #getActivity() برگردانده می‌شود، اکنون همیشه به نمونه فعلی فعالیت اشاره می‌کند.
    • مشکل ۶۴۳۸۹۲۸۰ : GrantPermissionRule قابلیت WRITE_EXTERNAL_STORAGE را ارائه نمی‌دهد.
    • شماره ۳۷۰۶۵۹۶۵ : ActivityTestRule پس از تغییر جهت‌گیری، فعالیت را نشت می‌دهد
    • مشکل 75254050 : ActivityTestRule در حین تغییرات پیکربندی، نمونه Activity را به‌روزرسانی نمی‌کند.
    • مشکل ۶۴۴۶۴۶۲۵ : نمی‌توان کار رابط کاربری را در متد finish() از Activity انجام داد
  • AndroidTestOrchestrator
    • برای تولید فایل‌های پوشش در مکان مشخص شده، از پرچم‌های -e coverage true -e coverageFilePath /sdcard/foo/ ‎ استفاده کنید (برنامه باید مجوز نوشتن در مکان مشخص شده را داشته باشد). قرارداد نامگذاری فایل پوشش اکنون به صورت com.foo.Class#method1.ec ‎ است. توجه داشته باشید که این فقط در حالت ایزوله پشتیبانی می‌شود. همچنین، نمی‌توان آن را همراه با پرچم coverageFile در AndroidJUnitRunner استفاده کرد. از آنجا که فایل‌های پوشش تولید شده یکدیگر را بازنویسی می‌کنند.
    • اگر می‌خواهید ارکستراتور دستورات pm clear context.getPackageName() و pm clear targetContext.getPackageName() را بین فراخوانی‌های آزمایشی اجرا کند، پرچم -e clearPackageData را وارد کنید. توجه داشته باشید که context در دستور clear، App تحت context آزمایشی است.
    • رفع شد - هنگام اجرای یک تست خالی، یعنی بدون @Test در داخل هدف، نتیجه تست با حالت قدیمی متفاوت است.
    • شماره ۷۲۷۵۸۵۴۷ : Test Orchestrator باعث می‌شود داده‌های پوشش Jacoco ناقص باشند، فقط داده‌های آخرین اجرای آزمایش را دارد
    • شماره ۶۷۹۱۶۰۴۲ : هماهنگ‌کننده تست اندروید: اجرا به دلیل خرابی فرآیند به دلیل OutOfMemory متوقف شد
    • مشکل شماره ۷۷۷۵۲۷۳۵ : خطای TransactionTooLargeException در Orchestrator
    • مشکل ۷۷۵۴۹۴۸۱ : Test Orchestrator باید بعد از هر تست "pm clear" را اجرا کند.

اسپرسو ۳.۰.۲-alpha1، دونده ۱.۰.۲-alpha1، قوانین ۱.۰.۲-alpha1، AndroidTestOrchestrator ۱.۰.۲-alpha1 (۲۰۱۷-۱۲-۰۵)

  • اسپرسو

    • Intents اکنون یک پاسخ قابل فراخوانی دارند که به تست‌ها اجازه می‌دهد پس از دریافت یک intent فعال‌شده اما قبل از بازگرداندن شیء Instrumentation.ActivityResult ، اجرا شوند.
  • دونده

    • برای کاربرانی که MonitoringInstrumentation بدون اجرای تست و ویژگی‌های JUnit نیاز دارند، از دستور monitor maven artifact com.android.support.test:monitor:<version> استفاده کنید.

      اگر com.android.support.test:runner:<version> استفاده کنید، همه چیز طبق انتظار پیش می‌رود، زیرا Gradle به طور خودکار ماژول monitor را به عنوان یک وابستگی از ماژول runner دریافت می‌کند.

    • پرچم newRunListenerOrderMode اضافه شد. وقتی true ، شنونده‌های تعریف‌شده توسط کاربر قبل از شنونده‌های پیش‌فرض اجرا می‌شوند. (ما انتظار داریم که این رفتار در نهایت به حالت پیش‌فرض تبدیل شود.)

    • مشکل ۶۵۸۲۸۵۷۶ : TestRequestBuilder هنگام اجرای تست‌ها در کلاسی که با @Ignore حاشیه‌نویسی شده است (به صورت مستقل و بدون اجرای تست یا ویژگی‌های JUnit) از کار می‌افتد.

  • AndroidTestOrchestrator

    • اکنون تست‌های خالی را به همان روشی که AndroidJUnitRunner غیر هماهنگ انجام می‌دهد، مدیریت می‌کند.
    • Orchestrator اکنون می‌تواند خروجی استاندارد بسیار بزرگی را از AndroidJUnitRunner مدیریت کند.

اسپرسو ۳.۰.۱، دونده ۱.۰.۱، قوانین ۱.۰.۱، AndroidTestOrchestrator ۱.۰.۱ (۲۰۱۷-۰۸-۲۸)

  • اسپرسو

    • گزینه‌ای IdlingPolicy اضافه شده است تا در صورت اتصال یک اشکال‌زدای مرحله‌ای به ماشین مجازی، از onTimeout() جلوگیری شود.
    • مشکلات ‎64024656 ‎، ‎64247586 ‎ و ‎64525881 ‎: در صورت عدم موفقیت در بارگذاری کلاس، گزارش خرابی ارسال نکنید، مگر اینکه کاربر با وارد کردن آرگومان -e class runner در حال بارگذاری کلاس‌های خاص باشد.
    • مشکل ۶۴۸۷۷۲۴۶ : کلاس‌های از دست رفته را به فایل JAR منبع اضافه کنید.
  • دونده

    • منطق ساده‌شده‌ی ShardingFilter .
    • مشکل ۶۵۰۲۵۷۴۳ : فیلتر @RequiresDevice اکنون از شبیه‌سازهای FTL پشتیبانی می‌کند.
  • AndroidTestOrchestrator

    • گزارش خرابی‌ها را تکرار نکنید. وقتی یک فرآیند تست پس از خرابی از کار می‌افتد، اکنون فقط یک خرابی برای تست گزارش می‌شود.
    • Javadoc برای Orchestrator اصلاح شد.
    • اکنون در صورت خرابی فرآیند از راه دور، آزمایش‌ها از دست رفته نشان داده می‌شوند.
    • اکنون موارد آزمایشی نادیده گرفته شده را مدیریت می‌کند.
    • اکنون موارد تست نادیده گرفته شده را از پاورقی حذف می‌کند تا با نتایج قدیمی مطابقت داشته باشد.
    • مشکلات مربوط به مجوزهای زمان اجرا برطرف شد. گزارش‌های تست اکنون در اندروید ۷.۰ (سطح API ۲۴) و بالاتر روی کارت SD نوشته می‌شوند.

اسپرسو ۳.۰.۰، رانر ۱.۰.۰، رول‌ها ۱.۰.۰، اندرویدتِست‌ارکستریتور ۱.۰.۰ (۲۵ ژوئیه ۲۰۱۷، اطلاعیه )

شکستن تغییرات

  • همه آثار باستانی
    • قطع پشتیبانی از سطوح API پایین‌تر از ۱۵ - با این حال، حداقل SDK هنوز به API سطح ۹ اشاره می‌کند تا به کاربران زمان برای ارتقا بدهد.
  • اسپرسو
    • کلاس منسوخ‌شده‌ی android.support.test.espresso.contrib.CountingIdlingResource حذف و به android.support.test.espresso.idling.CountingIdlingResource منتقل شده است.
    • Guava اکنون به یک فضای نام "داخلی" متفاوت منتقل شده است - اگر به طور تصادفی از API Guava از طریق فضاهای نام Espresso استفاده کنید، ممکن است با مشکلاتی مواجه شوید
      • هرگونه ارجاع به Guava سایه‌دار ( .core.deps.guava. ) را حذف کنید.
      • نسخه کتابخانه پشتیبانی خود را به ۲۵.۴.۰ یا بالاتر ارتقا دهید

مشکلات شناخته شده

  • AndroidTestOrchestrator
    • آرگومان‌های اجراکننده‌ی -e numShards ‎ و -e shardIndex ‎ در حال حاضر پشتیبانی نمی‌شوند.
    • تست‌های پارامتری در حال حاضر پشتیبانی نمی‌شوند

ویژگی‌های جدید

  • دونده
    • InterceptingActivityFactory و SingleActivityFactory - با بازنویسی متدهایی مانند startService() و sendBroadcast() امکان آزمایش یک فعالیت را به صورت جداگانه از دنیای بیرونی فراهم می‌کند.
    • پشتیبانی از استفاده از JUnitParams با AndroidJUnitRunner را اضافه کنید
    • شروع مدیریت @UiThreadTest در سطح اجراکننده تست اصلی و منسوخ کردن @UiThreadTestRule - این کار امکان استفاده از حاشیه‌نویسی @UiThreadTest را مستقیماً روی متدهای حاشیه‌نویسی شده با @Before و @After فراهم می‌کند.
    • حاشیه‌نویسی @SdkSupress اکنون از مقدار maxSdkVersion پشتیبانی می‌کند (شماره 37067792 )
    • -e classLoader – امکان ارسال class loaderها با استفاده از آرگومان‌های runner را فراهم می‌کند.
    • -e filter - پشتیبانی از فیلترهای JUnit سفارشی را که با استفاده از آرگومان‌های runner مشخص می‌شوند، اضافه می‌کند.
    • -e runnerBuilder – به توسعه‌دهندگان اجازه می‌دهد پیاده‌سازی‌های خودشان از RunnerBuilder را ارائه دهند که می‌تواند تعیین کند که آیا و چگونه می‌توانند در برابر یک کلاس خاص اجرا شوند.
  • قوانین
  • AndroidTestOrchestrator
    • Orchestrator تست اندروید، روشی جدید برای جمع‌آوری و اجرای تست‌ها، با تأکید بر صحت و جداسازی، ارائه می‌دهد. Orchestrator یک فرآیند Instrumentation مستقل است که برای هر تست، یک فرآیند Instrumentation runner ایجاد کرده و نتایج را جمع‌آوری می‌کند.
      • خرابی‌های برنامه، ابزار دقیق runner را از کار می‌اندازد اما orchestrator را از کار نمی‌اندازد و به مجموعه تست شما اجازه می‌دهد تا ادامه یابد.
      • نیاز به نصب APK ارکستراتور دارد - 'com.android.support.test:orchestrator:1.0.0'
      • نسخه ۱.۰ فقط رابط خط فرمان دارد؛ ادغام با اندروید استودیو و آزمایشگاه‌های تست فایربیس برنامه‌ریزی شده است

رفع اشکالات

  • اسپرسو
    • بهبود همگام‌سازی نمای ریشه برای کاهش قابل توجه پوسته پوسته شدن
    • رفع مشکل خرابی IdlingResourceRegistry
    • هماهنگ‌سازی بهتر در برابر اشیاء IdlingResource
    • شماره ۳۷۱۳۲۶۸ : اسپرسو قبل از انجام اقدام بعدی منتظر تکمیل ایجاد کادر محاوره‌ای نمی‌ماند
    • شماره ۳۷۱۰۳۲۸۰ : اسپرسو باید قوانین مصرف‌کننده ProGuard را ارسال کند تا مصرف‌کنندگان ملزم به اضافه کردن آنها نباشند.
    • شماره ۳۷۰۹۴۷۲۶ : Espresso Intents حاوی برچسب برنامه غیرضروری است
    • شماره ۳۷۰۹۳۹۵۳ : اسپرسو: بررسی متن خطای تهی/خالی در دسترس نیست
    • شماره ۳۷۰۷۱۷۷۶ : espresso-core فایل‌های .pom مربوط به Guava را جاسازی می‌کند
    • شماره ۳۷۰۶۲۶۱۲ : NPE در release()
    • شماره ۳۷۰۶۳۳۸۹ : داشتن Guava و espresso-web به عنوان وابستگی‌های androidTest کامپایل نمی‌شود
    • شماره ۳۷۰۷۰۵۳۳ : افزودن پشتیبانی برای NavigationView در کتابخانه پشتیبانی طراحی اندروید
  • دونده
    • رفع مشکل استفاده از @UiThreadTest در ترکیب با @Test(timeout = 123)
    • آرگومان runner -e notClass رفع شد.
    • رفع مشکل -e log ‎ برای پشتیبانی از مجموعه‌های تست JUnit3 و JUnit4 و همچنین اجراکننده‌های Parameterized و Enclosed
    • شماره ۳۷۶۶۳۵۳۰ : قبل و بعد از هر روش تست، منتظر بمانید تا تمام فعالیت‌ها تمام شوند
    • شماره ۳۷۱۳۲۶۸ : اسپرسو قبل از انجام اقدام بعدی منتظر تکمیل ایجاد کادر محاوره‌ای نمی‌ماند
    • شماره ۳۷۱۲۳۲۱۳ : @RequiresDevice در x86_64 ABI نادیده گرفته می‌شود
    • شماره 37101485 : برخی از آرگومان‌های ارائه شده توسط manifest برای AndroidJUnitRunner - مانند اندازه تست، حاشیه‌نویسی و اشکال‌زدایی - نادیده گرفته می‌شوند.
    • شماره ۳۷۰۸۲۸۵۷ : اجرای تست نیمه موازی Espresso روی اشیاء استاتیک با شکست مواجه می‌شود
    • شماره ۳۷۰۶۳۳۹۶ : Context با ProviderTestCase2 مقداردهی اولیه نشده است (باعث NullPointerException می‌شود)

سایر تغییرات قابل توجه

  • فایل‌های باینری اکنون از طریق Google Maven منتشر می‌شوند
  • کاهش حجم فایل‌های JAR مربوط به espresso-core و espresso-web - وابستگی‌های تعبیه‌شده اکنون دارای ProGuard هستند.
  • اکنون همه فایل‌های .aar شامل قوانین ProGuard می‌شوند
  • فایل‌های proguard_library.cfg را به مصنوعات منتشر شده اضافه کنید
  • رابط Tapper نسخه جدیدی از sendTap() را برای پیاده‌سازی دارد.

مشارکت‌های خارجی

اسپرسو ۲.۲.۲، رانر/رولز ۰.۵ (۲۰۱۶-۰۲-۲۲، انتشار بی‌صدا)

ویژگی‌های جدید

  • اسپرسو
    • شماره ۱۹۴۲۵۳ : اضافه کردن پشتیبانی برای NavigationView در کتابخانه طراحی پشتیبانی اندروید
    • بررسی‌های مربوط به انیمیشن‌ها و انتقال‌های فعال اضافه شد
    • رابط برنامه‌نویسی کاربردی جدید ViewMatcher : withResourceName()

رفع اشکالات

  • اسپرسو
    • شماره ۱۹۵۳۳۱ : espresso-core فایل‌های pom مربوط به guava را جاسازی می‌کند
    • منبع شمارشگر غیرفعال را از espresso-contrib خارج کرد.
  • قوانین
  • دونده
    • مشکل ۱۹۶۰۶۶: آرگومان -e log true در AndroidJUnitRunner تست واقعی را دور نمی‌زند.
    • منتظر اشکال‌زدا در onCreate() ‎ مربوط به اجراکننده باشید
    • تمام حاشیه‌نویسی‌های تست پشتیبانی‌شده از پلتفرم خارج و به ATSL منتقل شدند.
    • حذف ردپای پشته در مورد عدم وجود JSBridge
    • رفع مشکل AndroidAnnotatedBuilder

سایر تغییرات قابل توجه

  • ActivityTestRule ، UiThreadTestRule ، IntentsTestRule و ServiceTestRule از نسخه بتا خارج شده‌اند.
  • فایل تنظیمات سبک کد را برای قالب‌بندی یکنواخت کد اضافه کنید

اسپرسو ۲.۲.۱، رانر/رولز ۰.۴ (۲۰۱۵-۰۹-۱۵)

ویژگی‌های جدید

  • قوانین
    • سازنده جدید IntentsTestRule برای سازگاری کامل با ActivityTestRule اضافه شد
  • دونده
    • نصب چندرسانه‌ای ویژه برای سطوح API 15 و پایین‌تر اضافه شد
    • فیلترهای حذف به کلاس و پکیج اضافه شد:
      • اجرای همه تست‌ها به جز تست‌های یک کلاس خاص: adb shell am instrument -w -e notClass com.android.foo.FooTest
      • اجرای همه تست‌ها به جز یکی: adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
      • اجرای همه تست‌ها به جز یک بسته خاص: adb shell am instrument -w -e notPackage com.android.foo.bar

مشارکت‌های خارجی

  • اسپرسو
    • ۱۵۷۹۱۱ : تطبیق‌دهنده‌ی نما برای نوع ورودی در یک شیء EditText اضافه کنید
    • ۱۵۷۹۱۲ : اضافه کردن تطبیق‌دهنده‌ی نما برای تطبیق متن خطا در یک شیء EditText
    • ۱۵۰۶۷۴ : پشتیبانی DrawerActions برای کشوهایی با گرانش دلخواه اضافه شد
    • ۱۵۰۷۴۴ : DrawerActions دیگر parentListener نشت نمی‌دهد
    • ۱۵۳۳۰۳ : وزن مخصوص مشخص شده در چک‌های «آیا کشو باز است یا بسته»
    • ۱۵۷۹۱۰ : اضافه کردن DrawerLayout برای باز و بسته کردن factoryها

رفع اشکالات

  • اسپرسو
    • ViewActions.closeSoftKeyboard() اکنون تضمین می‌کند که صفحه‌کلید نرم‌افزاری به‌طور کامل از بین رفته است.
    • مشکل همگام‌سازی با متد Espresso.pressBack() در Espresso در سطح API 21 و بالاتر برطرف شد.
    • هماهنگ‌سازی ثابت برای انیمیشن‌های بسته شدن صفحه‌کلید در سطح API 23
  • قوانین
    • رفع مشکل ServiceTestRule در API سطح ۲۳، startService() باید همیشه با یک Intent صریح فراخوانی شود.
  • دونده
    • رفع مشکل خرابی پشتیبانی از Gradle JaCoCo
    • رفع مشکل پشتیبانی از تست شاردینگ (sharding) ناقص
    • رفع مشکل وضعیت نامتناسب در اجرای تست پس از وقفه‌های تست به سبک JUnit3

سایر تغییرات قابل توجه

  • رفع مشکلات Javadoc و بهبود پیام‌های خطا
  • هنگام استفاده از فیلترهای متد، متدهای suite() را نادیده بگیرید و خطاهای init را نادیده نگیرید.

اسپرسو ۲.۲ / ATSL ۰.۳ (۲۰۱۵-۰۶-۰۹)

ویژگی‌های جدید

  • اسپرسو-وب ۲.۲
    • پشتیبانی جدید WebView
  • اسپرسو کور ۲.۲
    • برای استفاده از dagger نسخه ۲ مهاجرت کرد.
    • برای استفاده از hamcrest نسخه ۱.۳ مهاجرت کرد
  • اسپرسو-کانتریب ۲.۲
    • بررسی‌های دسترسی‌پذیری
    • پشتیبانی گرانشی DrawerActions
  • قوانین ۰.۳
    • قانون DisableOnAndroidDebug
  • دونده ۰.۳
    • ارتقا از JUnit نسخه ۴.۱۰ به JUnit نسخه ۴.۱۲
    • برای استفاده از Hamcrest نسخه ۱.۳ مهاجرت کرد.

رفع اشکالات

  • رفع مشکل نشت ParentListener DrawerActions
  • شکست فرض اکنون به عنوان یک آزمون نادیده گرفته شده به جای یک آزمون ناموفق در نظر گرفته می‌شود.
  • رفع مشکل نشت نمونه‌های فعالیت MonitoringInstrumentation از طریق ExecutorService
  • مشکل گیر کردن فعالیت‌های بی‌سرپرست در مرحله متوقف‌شده برطرف شد
  • تابع Until.scrollFinished() را به‌روزرسانی کنید تا در صورت عدم ایجاد رویداد اسکرول، مقدار true را برگرداند. در UiObject2#setText() از NPE احتمالی جلوگیری کنید.

اسپرسو ۲.۱، تست رانر/قوانین ۰.۲ و UIAutomator ۲.۱.۰ (۲۰۱۵-۰۴-۲۱)

شکستن تغییرات

  • مصنوع Test runner به دو قسمت تقسیم شد و نام آن از com.android.support.test:testing-support-lib:0.1 به com.android.support.test:runner:0.2 و com.android.support.test:rules:0.2 تغییر یافت.

ویژگی‌های جدید

  • espresso-intents : یک API شبیه Mockito که تست تعاملی هرمتیک را با اجازه دادن به نویسندگان تست برای تأیید و حذف intentهای خروجی، امکان‌پذیر می‌کند.
    • IntentsTestRule : از ActivityTestRule ارث‌بری می‌کند، Espresso-Intents را در تست‌های رابط کاربری تابعی مقداردهی اولیه و منتشر می‌کند.
  • هسته اسپرسو
    • ViewActions : قابلیت اجرای دستورات سراسری (global assertion) قبل از اجرای اکشن‌ها اضافه شده است. این قابلیت برای سایر فریم‌ورک‌هایی که بر پایه Espresso ساخته می‌شوند، مفید است تا وضعیت سلسله مراتب view را در حین اجرای مجموعه تست Espresso موجود، اعتبارسنجی کنند.
    • ViewMatchers.withContentDescription() ‎ سربارگذاری resId
  • قوانین
    • ActivityTestRule : این قانون، تست عملکردی یک فعالیت واحد را فراهم می‌کند.
    • حاشیه‌نویسی‌های UiThreadRule و UiThreadTest : این قانون به متد تست حاشیه‌نویسی شده با UiThreadTest اجازه می‌دهد تا روی نخ اصلی برنامه (یا نخ رابط کاربری) اجرا شود.
    • ServiceTestRule : این قانون، تست عملکردی یک سرویس را فراهم می‌کند.
  • دونده
    • ApplicationLifecycleCallback : فراخوانی برای نظارت بر رویدادهای چرخه حیات برنامه
    • اکنون می‌توان تمام آرگومان‌های runner را با استفاده از تگ <meta-data> در فایل manifest اندروید نیز مشخص کرد.
  • UIAutomator
    • UiDevice.dumpWindowHierarchy() اکنون می‌تواند یک File یا یک OutputStream بپذیرد.

رفع اشکالات

  • اسپرسو
    • تطبیق‌دهنده‌ی مکان‌نما اکنون اگر ستون پیدا نشود، false را برمی‌گرداند تا Hamcrest بتواند به مکان‌نمای بعدی برود.
    • دیگر NullPointerException با PreferenceMatchers withTitle رخ نمی‌دهد
    • لغو ثبت منابع غیرفعال دیگر باعث نمی‌شود که اسپرسو فکر کند ما منابع غیرفعال مشغول داریم
    • نسخه پشتیبانی حاشیه‌نویسی‌های مورد استفاده توسط Espresso Contrib به‌روزرسانی شد
  • دونده
    • AndroidJUnit4 اکنون تست‌هایی را که فرضیات ناموفق دارند، رد می‌کند.
  • UIAutomator
    • برای جلوگیری از StaleObjectException ناظران را اجرا کنید

سایر تغییرات قابل توجه

  • وقتی نمی‌توانیم متن را با رشته‌ای غیر از لاتین تایپ کنیم، پیام خطای بهتری اضافه شود

UIAutomator 2.0 (2015-03-12)

UI Automator اکنون مبتنی بر Android Instrumentation است و می‌توانید با استفاده از دستور ./gradlew connectedCheck تست‌ها را بسازید و اجرا کنید.

اسپرسو نسخه ۲.۰، تست رانر ۰.۱ (منتشر شده در: ۲۰۱۴-۱۲-۱۹)

شکستن تغییرات

  • اسپرسو به یک فضای نام جدید، از android.support.test.espresso به android.support.test.espresso منتقل شده است.
  • نام مصنوعات اسپرسو تغییر کرده است
    • espresso-1.1.jar اکنون به espresso-core-release-2.0.jar تبدیل شده است
    • رابط IdlingResource به یک کتابخانه جداگانه منتقل شده است: espresso-idling-resource-release-2.0.jar
    • CountingIdlingResource اکنون در espresso-contrib-release-2.0.jar قرار دارد (همانطور که همیشه باید داشته باشد)
  • اختیاری (یک وابستگی guava) از API عمومی حذف شده است تا از بسته‌بندی مجدد وابستگی guava پشتیبانی شود و از تصادم DEX (منبع اصلی مشکلات توسعه) جلوگیری شود. روش‌های تحت تأثیر شامل موارد زیر هستند:
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

ویژگی‌های جدید

  • اقدامات
    • ViewActions
      • replaceText()
      • openLink()
      • بالا و پایین بکشید
    • اسپرسو-کمک
      • RecyclerViewActions : تعاملات با RecyclerViews را مدیریت می‌کند.
      • PickerActions : تعاملات با انتخابگرهای Date و Time را مدیریت می‌کند.
  • تطبیق‌دهنده‌ها
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers : تطبیق‌دهنده‌هایی برای تست طرح‌بندی مرتبط با i18n
    • CursorMatchers : مجموعه‌ای از تطبیق‌دهنده‌ها برای اشیاء Cursor
  • ادعاها
    • PositionAssertions ، شامل isLeftOf() و isAbove() : مجموعه‌ای از ViewAssertions برای بررسی موقعیت نسبی عناصر روی صفحه
    • LayoutAssertions : ادعاهایی برای آزمایش طرح‌بندی مربوط به i18n
  • برنامه آزمون: بسیاری از فعالیت‌ها/آزمون‌های نمونه جدید
  • دیگر
    • Espresso.unregisterIdlingResources() و Espresso.getIdlingResources() : انعطاف‌پذیری بیشتری برای کار با IdlingResources فراهم می‌کند.
    • ViewInteraction.withFailureHandler() : امکان لغو مدیریت‌کننده‌ی خطا از onView() را فراهم می‌کند.
    • پشتیبانی onData() برای AdapterViews که توسط CursorAdapters پشتیبانی می‌شوند

رفع اشکالات

  • ViewMatchers.isDisplayed() با نماهایی مطابقت دارد که کل صفحه نمایش را اشغال می‌کنند، اما دیگر کمتر از ۹۰٪ نمایش داده نمی‌شوند.
  • انجام فراخوانی اکشن swipe به DrawerActions.openDrawer() دیگر منجر به IdlingResourceTimeoutException نمی‌شود.

سایر تغییرات قابل توجه

  • از ساخت با Maven به Gradle تغییر دادم
  • وابستگی‌های Espresso (Guava، Dagger، Hamcrest) را از دسترس خارج کرد تا از تداخل DEX جلوگیری شود.
  • تغییر کرد تا هنگام ثبت و لغو ثبت منابع غیرفعال، موفقیت یا شکست را نشان دهد.
  • پشتیبانی از Lollipop: قرار دادن message.recycle() در پشت یک رابط برای در نظر گرفتن تغییرات مربوط به نسخه
  • سطح SDK هدف به ۲۱ تغییر یافت - بیشتر روی برنامه آزمایشی تأثیر می‌گذارد

نسخه ۱.۱ (منتشر شده در: ۲۰۱۴-۰۱-۰۸)

اسپرسو

  • ViewActions جدید نمای swipeLeft و swipeRight
  • پشتیبانی از چند پنجره: یک ویژگی پیشرفته که امکان انتخاب پنجره هدف را که Espresso باید عملیات را در آن اجرا کند، فراهم می‌کند.
  • بهبودهایی در TypeTextAction : امکان تایپ متن در نمای از پیش فوکوس‌شده را فراهم می‌کند که افزودن متن را آسان‌تر می‌کند.
  • رفع اشکالات متعدد

کتابخانه مشارکت اسپرسو

  • این کتابخانه جدید شامل ویژگی‌هایی است که Espresso را تکمیل می‌کنند، اما بخشی از کتابخانه اصلی نیستند.
  • DrawerActions جدید برای عملیات روی DrawerLayout : به کتابخانه پشتیبانی اندروید وابسته است، از این رو آن را خارج از کتابخانه اصلی Espresso نگه می‌داریم.

نمونه آزمایش‌ها

  • این تست‌ها به همان بسته‌ای که اپلیکیشن تست در آن قرار دارد، منتقل شده‌اند.
  • Maven POM ها برای حذف deps های تکراری guava اصلاح شده اند، بنابراین mvn install اکنون باید کار کند.