ארכיון נתוני גרסאות לבדיקה

‫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 (13 בדצמבר 2018)

זוהי הגרסה היציבה של AndroidX Test 1.1.0

  • Core
    • הוספת תמיכה ב-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-beta01, ‏ JUnit 1.1.0-beta01 (2018-12-06)

  • Core
    • ‫core-ktx kotlin extension artifact חדש! כולל API של ActivityScenario.launchActivity שמתאים ל-Kotlin
    • ‫ActivityScenario API חדש להפעלת פעילויות עם כוונות מותאמות אישית
    • ‫ActivityScenario API חדש לקבלת תוצאה של פעילות
    • הוספת אפשרות לסגירת ActivityScenario
  • Espresso
    • שינוי של withResourceNameMatcher ו-HumanReadables כך שיהיו תואמים ל-API 28.
    • צריך לעדכן את התיאור של ReplaceTextAction כך שיכלול את המחרוזת stringToBeSet
    • תמיכה ב-Espresso במצב השהיה של Robolectric looper.
  • JUnit
    • ‫API חדש של ActivityScenarioRule להפעלה וסגירה אוטומטיות של פעילות בהגדרה ובביטול של בדיקה
    • ‫junit-ktx הוא ארטיפקט חדש של הרחבת Kotlin! כולל kotlin-friendly ActivityScenarioRule API
  • Runner
    • התנהגות עקבית של האפשרויות ‎-e package ו-‎-e testFile כשמתקבלות חבילות
  • Truth
    • הוספה של ממשקי API מסוג BundleSubject‏: bool,‏ parcelable ו-parcelableAsType

‫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 (24 באוקטובר 2018)

  • הכול
    • הגדרת minSdkVersion ל-14 ו-targetSdkVersion ל-28
  • Espresso
    • תיקון באמצעות withContentDescription כדי לעבוד עם סוגים שאינם מחרוזות
    • הוספת תמיכה בשימוש ב-Espresso ב-Robolectric
    • בעיה 72798625: Espresso ViewMatchers.withText לא פועל כשהתכונה textAllCaps מופעלת
    • הוספת תמיכה בהחדרת רצף של אירועי תנועה
  • מטרות
    • הוספת API בגרסת בטא לאחזור רשימה של כוונות. מיועד לשימוש עם טענות חדשות לגבי עובדות
  • Runner
    • הוספת תמיכה באפליקציות ללא התקנה
    • הוצאה משימוש של 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. נוסף דגל חדש של orchestratorDebug לניפוי באגים של כלי התזמור עצמו
  • Core
    • פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
      • שליפת ההקשר: ApplicationProvider
      • שליטה במחזורי החיים של פעילויות: ActivityScenario(beta)
      • Builders for MotionEvent, PackageInfo
      • מחלקת השירות Parceables
  • Truth
    • פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש! כולל נושאי אמת בהתאמה אישית לגבי Notification,‏ Intent,‏ Bundle,‏ Parcelable ו-MotionEvent
  • JUnit
    • פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש! כולל את מחלקת ההרצה JUnit ‏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)

  • Espresso
    • שינוי ב-API שגורם לבעיות:
      • הפנייה 64062890 הופנתה לתשומת ליבנו, ובה צוין שהשתמשנו ב-Guava Optional ב-API הציבורי שלנו. זו הייתה טעות חמורה מצדנו . לכן, בגרסה הזו יש שינוי ב-API הציבורי שעלול לגרום לבעיות, והוא נועד לפתור את הבעיה הזו. הוספנו wrapper מכוער למחלקה Guava Optional, שנקרא EspressoOptional ונמצא במרחב השמות android.support.test.espresso.util. מפתחים שהשתמשו ב-Guava Optional API שדלף צריכים לשנות את הייבוא וההפניות שלהם כדי להשתמש ב-EspressoOptional במהלך העדכון לגרסה החדשה הזו. אנחנו מתנצלים על אי הנוחות שנגרמה לך.
    • ה-API‏ onView()‎ ו-onData()‎ מסומנים עכשיו ב-‎ @CheckReturnValue כדי למנוע שגיאות
    • תוקן קובץ ה-POM של espresso-core כך שלא ימשוך את התלות rules, אלא קובץ ה-POM של espresso-intents. השינוי הזה לא אמור להשפיע על מפתחים, כי אי אפשר להשתמש ב-espresso-intents בלי espresso-core.
    • בעיה 65486414: חסרה תלות בגוואבה ב-Espresso
    • בעיה 65576174: הפונקציה Espresso IdlingResourceRegistry.sync גורמת לבדיקה השנייה להיכשל
    • בעיה 65568629: Espresso.onIdle לא משתמש ב-IdlingRegistry
    • בעיה 69333598: espresso 3.0.1 לא תואם ל-play-services-auth:11.6.0 במודול ספריית Android.
    • בעיה 64062890: סוג אופציונלי פנימי שנחשף על ידי הממשק AdapterViewProtocol
    • בעיה 64091847: אסור ש-Espresso 3.0.0 יהיה תלוי ב-test runner
    • בעיה 73722050: חבילות espresso-contrib 3.0.2-alpha1 מכילות מחלקות android.arch.{lifecycle/core}
  • Espresso-remote
    • זהו ארטיפקט חדש לגמרי. הפרדנו את כל הפונקציונליות של Espresso שקשורה לריבוי תהליכים מחוץ לארטיפקט espresso-core. השינוי הזה יקטין באופן משמעותי את הגודל הכולל של espresso-core ואת מספר השיטות.
  • Runner
    • חיתוך של מעקב אחר מחסנית אם הוא גדול מדי לעסקת binder. מכיוון ש-AJUR צריך לדווח על כשלים בחזרה ל-AM באמצעות Binder IPC, אנחנו צריכים לוודא שלא חורגים ממגבלת העסקאות של Binder – שהיא 1MB לכל תהליך.
    • בעיה 65828576: קריסת TestRequestBuilder כשמריצים בדיקה בכיתה עם @Ignore
    • בעיה 37057596: אנחנו לא מטפלים בכשלים ב-‎ @BeforeClass
  • כללים
    • חשוב לשחרר הפניה לפעילות שנבדקת אחרי שינויים במחזור החיים. במהלך משך הבדיקה, אפשר עכשיו לשנות את הפעילות ישירות באמצעות ההפניה שהתקבלה מ-‎ #getActivity()‎. אם הפעילות מסתיימת ומופעלת מחדש, ההפניה שמוחזרת מ-‎ #getActivity()‎ תמיד מצביעה על המופע הנוכחי של הפעילות.
    • בעיה 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. הערה: ההקשר בפקודת המחיקה הוא ההקשר של האפליקציה שנבדקת.
    • תוקן – כשמריצים בדיקה ריקה, כלומר אין @Test בתוך היעד, תוצאת הבדיקה שונה ממצב מדור קודם.
    • בעיה 72758547: Test Orchestrator גורם לכך שנתוני הכיסוי של Jacoco יהיו חלקיים, וכוללים רק נתונים מהרצת הבדיקה האחרונה
    • בעיה 67916042: תזמור בדיקות ל-Android : הביצוע הופסק בגלל קריסת התהליך עקב חוסר זיכרון
    • בעיה 77752735: קריסת כלי התזמור בגלל TransactionTooLargeException
    • בעיה 77549481: כלי ניהול הבדיקות צריך להריץ את הפקודה pm clear אחרי כל בדיקה

‫Espresso 3.0.2-alpha1, ‏ Runner 1.0.2-alpha1, ‏ Rules 1.0.2-alpha1, ‏ AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)

  • Espresso

    • Intents יש עכשיו תשובה שאפשר להפעיל, כך שהבדיקות יכולות להתבצע אחרי שמתבצעת כוונה (intent) אבל לפני שמוחזר אובייקט Instrumentation.ActivityResult.
  • Runner

    • פיצול של ארטיפקט monitor maven com.android.support.test:monitor:<version>, למשתמשים שצריכים MonitoringInstrumentation בלי הפעלת בדיקות ותכונות JUnit.

      אם משתמשים ב-com.android.support.test:runner:<version>, הכול פועל כמצופה, כי Gradle מאחזר אוטומטית את מודול monitor כתלות במודול runner.

    • נוסף דגל newRunListenerOrderMode. כשמגדירים true, מאזינים שהוגדרו על ידי המשתמש מופעלים לפני מאזיני ברירת המחדל. (אנחנו צופים שההתנהגות הזו תהפוך בסופו של דבר לברירת המחדל).

    • בעיה 65828576: TestRequestBuilder קורס כשמריצים בדיקות בכיתה עם ההערה @Ignore (standalone בלי תכונות של הרצת בדיקות או JUnit).

  • AndroidTestOrchestrator

    • עכשיו המערכת מטפלת בבדיקות ריקות באותו אופן כמו בבדיקות לא מתואמות AndroidJUnitRunner.
    • מעכשיו, Orchestrator יכול לטפל בפלט רגיל גדול מאוד מ-AndroidJUnitRunner.

‫Espresso 3.0.1, ‏ Runner 1.0.1, ‏ Rules 1.0.1, ‏ AndroidTestOrchestrator 1.0.1 (2017-08-28)

  • Espresso

    • הוספנו את האפשרות IdlingPolicy להשבתת onTimeout() כשמצורף מאתר באגים של שלבים למכונה הווירטואלית.
    • בעיות 64024656, 64247586 ו-64525881: לא מדווח על כשלים בטעינת מחלקה שלא הצליחה להיטען, אלא אם משתמש טוען מחלקות ספציפיות על ידי הכללת הארגומנט -e של מפעיל המחלקה.
    • בעיה 64877246: הוספת מחלקות חסרות לקובץ JAR של מקורות
  • Runner

    • לוגיקה פשוטה יותר של ShardingFilter.
    • בעיה 65025743: המסנן @RequiresDevice תומך עכשיו באמולטורים של FTL.
  • AndroidTestOrchestrator

    • אל תשכפלו כשלים בדוחות. אם תהליך בדיקה קורס אחרי שהוא נכשל, עכשיו מדווח על כשל אחד בלבד בבדיקה.
    • תוקן Javadoc עבור Orchestrator.
    • אם התהליך המרוחק קורס, הבדיקות מסומנות עכשיו כ'הוחמצו'.
    • עכשיו המערכת מטפלת במקרים של בדיקות שהיא מתעלמת מהן.
    • עכשיו המערכת מחריגה מהכותרת התחתונה מקרים של בדיקות שהמערכת התעלמה מהם, כדי להתאים לתוצאות מדור קודם.
    • תוקנו בעיות בהרשאות בזמן ריצה. דוחות בדיקה נכתבים עכשיו בכרטיס SD ב-Android 7.0 (רמת API‏ 24) ומעלה.

‫Espresso 3.0.0, ‏ Runner 1.0.0, ‏ Rules 1.0.0, ‏ AndroidTestOrchestrator 1.0.0 (25 ביולי 2017, הודעה)

שינויי תוכנה שעלולים לגרום לכשלים

  • כל פריטי המידע שנוצרו בתהליך הפיתוח (Artifact)
    • הפסקנו את התמיכה ברמות API נמוכות מ-15 – עם זאת, ה-SDK המינימלי עדיין מצביע על רמת API ‏9 כדי לתת למשתמשים זמן לשדרג
  • Espresso
    • הכיתה android.support.test.espresso.contrib.CountingIdlingResource שיצאה משימוש נמחקה והועברה אל android.support.test.espresso.idling.CountingIdlingResource
    • Guava מועבר עכשיו באמצעות jarjar למרחב שמות 'פנימי' אחר – אם אתם משתמשים בטעות ב-Guava API דרך מרחבי השמות של Espresso, יכול להיות שתיתקלו בבעיות
      • הסרת כל ההפניות ל-Guava מוצללת (.core.deps.guava.)
      • שדרוג גרסת ספריית התמיכה לגרסה 25.4.0 ומעלה

בעיות מוכרות

  • AndroidTestOrchestrator

תכונות חדשות

  • Runner
    • InterceptingActivityFactory ו- SingleActivityFactory – מספקות אפשרות לבדוק פעילות בבידוד מהעולם החיצוני על ידי החלפה של שיטות כמו startService() ו-sendBroadcast()
    • הוספת תמיכה בשימוש ב-JUnitParams עם AndroidJUnitRunner
    • התחלנו לטפל ב- @UiThreadTest ברמה של כלי ההרצה המרכזי של הבדיקות, והוצאנו משימוש את @UiThreadTestRule – כך אפשר להשתמש בהערה @UiThreadTest ישירות במתודות שמוערות באמצעות @Before ו- @After
    • ההערה @SdkSupress תומכת עכשיו בערך maxSdkVersion (בעיה 37067792)
    • -e classLoader – אפשרות להעביר טועני כיתות באמצעות ארגומנטים של runner
    • -e filter – הוספת תמיכה במסנני JUnit מותאמים אישית שאפשר לציין באמצעות ארגומנטים של runner
    • -e runnerBuilder – מאפשר למפתחים לספק הטמעות משלהם של RunnerBuilder שיכולות לקבוע אם ואיך הן יכולות לפעול בכיתה ספציפית
  • כללים
  • AndroidTestOrchestrator
    • Android Test Orchestrator מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על דיוק ובידוד. ‫Orchestrator הוא תהליך עצמאי של הגדרת תיוג, שיוצר תהליך אחד של הפעלת הגדרת תיוג לכל בדיקה ואוסף את התוצאות.
      • קריסות של אפליקציות גורמות להשבתת כלי המעקב של הרצת הבדיקות, אבל לא של כלי התיאום, ולכן חבילת הבדיקות יכולה להמשיך לפעול
      • נדרשת התקנה של קובץ ה-APK של כלי התזמור – 'com.android.support.test:orchestrator:1.0.0'
      • לגרסה 1.0 יש ממשק שורת פקודה בלבד. אנחנו מתכננים לשלב אותה עם Android Studio ו-Firebase Test Labs

תיקוני באגים

  • Espresso
    • שיפור הסנכרון של תצוגת הבסיס כדי להפחית משמעותית את חוסר היציבות
    • תיקון של קובץ פגום IdlingResourceRegistry
    • סנכרון משופר של אובייקטים של IdlingResource
    • בעיה 37132680: ‏Espresso לא ממתין לסיום יצירת תיבת הדו-שיח לפני ביצוע הפעולה הבאה
    • בעיה 37103280: צריך לשלוח את כללי ProGuard consumer עם Espresso כדי שהמשתמשים לא יצטרכו להוסיף אותם
    • בעיה 37094726: Espresso Intents contains unnecessary application label
    • בעיה 37093953: Espresso: No available check for null/empty error text
    • בעיה 37071776: הטמעת קובצי .pom של Guava ב-espresso-core
    • בעיה 37062612: NPE ב-release()
    • בעיה 37063389: קומפילציה נכשלת אם יש תלויות של Guava ו-espresso-web בתור androidTest
    • בעיה 37070533: הוספת תמיכה ב-NavigationView בספריית התמיכה של עיצוב Android
  • Runner
    • תיקון היכולת להשתמש ב- @UiThreadTest בשילוב עם @Test(timeout = 123)
    • תוקן ארגומנט של רץ -e notClass
    • תוקן -e log כדי לתמוך בחבילות בדיקה של JUnit3 ו-JUnit4, וגם ב-runners של Parameterized ו- Enclosed
    • בעיה 37663530: צריך לחכות שכל הפעילויות יסתיימו לפני ואחרי כל שיטת בדיקה
    • בעיה 37132680: Espresso לא ממתין עד ליצירת תיבת הדו-שיח לפני ביצוע הפעולה הבאה
    • בעיה 37123213: @RequiresDevice ignored on x86_64 ABI
    • בעיה 37101485: המערכת מתעלמת מחלק מהארגומנטים שסופקו במניפסט עבור AndroidJUnitRunner, כמו גודל הבדיקה, ההערה והניפוי באגים
    • בעיה 37082857: ביצוע בדיקות חצי מקביליות ב-Espresso נכשל באובייקטים סטטיים
    • בעיה 37063396: לא בוצעה אתחול של ההקשר עם ProviderTestCase2 (גורם ל-NullPointerException)

שינויים בולטים אחרים

  • קבצים בינאריים מתפרסמים עכשיו דרך Google Maven
  • הקטנת הגודל של קובצי ה-JAR‏ espresso-core ו-espresso-web – עכשיו מוחל ProGuard על יחסי תלות מוטמעים
  • כל קובצי .aar כוללים עכשיו כללי ProGuard
  • הוספת קבצים של proguard_library.cfg לארטיפקטים שפורסמו
  • בממשק Tapper יש גרסה חדשה של sendTap() להטמעה

תכנים חיצוניים שנוספו

‫Espresso 2.2.2, ‏ Runner/Rules 0.5 (‫2016-02-22, גרסה שקטה)

תכונות חדשות

  • espresso
    • בעיה 194253: הוספת תמיכה ב-NavigationView בספריית התמיכה של עיצוב Android
    • נוספו בדיקות לאנימציות ולמעברים שהופעלו
    • ViewMatcher API חדש: withResourceName()

תיקוני באגים

  • espresso
    • בעיה 195331: espresso-core מטמיע קובצי pom של guava
    • העברנו את הספירה של משאבים לא פעילים מ-espresso-contrib
  • rules
    • בעיה 187249: NPE ב-Intents.release()
  • runner
    • בעיה מספר 196066: הארגומנט -e log true ב-AndroidJUnitRunner לא מדלג על הבדיקה בפועל
    • המתנה לכלי לניפוי באגים ב-onCreate() של הרצת הבדיקה
    • העברנו את כל הערות הבדיקה הנתמכות מהפלטפורמה אל ATSL
    • הוסר ה-dump של דוח קריסות לגבי JSBridge
    • קבוע AndroidAnnotatedBuilder

שינויים בולטים אחרים

  • התכונות ActivityTestRule, ‏ UiThreadTestRule, ‏ IntentsTestRule וגם ServiceTestRule כבר לא בגרסת בטא
  • הוספת קובץ הגדרות של סגנון קוד לעיצוב קוד אחיד

‫Espresso 2.2.1, ‏ Runner/Rules 0.4 ‏ (2015-09-15)

תכונות חדשות

  • rules
    • נוסף בנאי חדש IntentsTestRule כדי להשיג תאימות מלאה ל-ActivityTestRule
  • runner
    • הוספנו התקנת 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

תכנים חיצוניים שנוספו

  • espresso
    • 157911: הוספת התאמה של תצוגה לסוג קלט באובייקט EditText
    • 157912: הוספת התאמה של תצוגה להתאמת טקסט של שגיאה באובייקט EditText
    • 150674: הוספת תמיכה ב-DrawerActions למגירות עם כוח משיכה שרירותי
    • 150744: DrawerActions no longer leak parentListener
    • 153303: הגדרת כוח המשיכה בבדיקות של 'המגירה פתוחה או סגורה'
    • 157910: הוספת DrawerLayout open ו-close action factories

תיקוני באגים

  • espresso
    • ViewActions.closeSoftKeyboard() מוודא עכשיו שהמקלדת הווירטואלית נעלמת לגמרי
    • תוקנה בעיה בסנכרון עם שיטת Espresso.pressBack() של Espresso ברמת API ‏21 ומעלה
    • תוקן סנכרון של אנימציות סגירה של מקלדת ב-API ברמה 23
  • rules
    • תוקן ServiceTestRule ברמת API‏ 23, תמיד צריך לקרוא ל-startService() עם Intent מפורש
  • runner
    • תוקנה התמיכה ב-gradle JaCoCo
    • תוקנה תמיכה בפיצול בדיקות
    • תוקן מצב לא עקבי בכלי להרצת בדיקות אחרי שחלף הזמן הקצוב לבדיקת סגנון JUnit3

שינויים בולטים אחרים

  • תיקונים ב-Javadoc ושיפורים בהודעות השגיאה
  • התעלמות משיטות suite() ואי התעלמות משגיאות init כשמשתמשים במסנני שיטות

‫Espresso 2.2 / ATSL 0.3 ‏ (2015-06-09)

תכונות חדשות

  • espresso-web 2.2
    • תמיכה חדשה ב-WebView
  • espresso-core 2.2
    • הועבר לשימוש ב-Dagger v2
    • הועבר לשימוש ב-hamcrest v1.3
  • espresso-contrib 2.2
    • בדיקות נגישות
    • DrawerActions תמיכה בכוח המשיכה
  • rules 0.3
    • כלל אחד (DisableOnAndroidDebug)
  • runner 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‏ (21 באפריל 2015)

שינויי תוכנה שעלולים לגרום לכשלים

  • הארטיפקט של כלי ההרצה של הבדיקות פוצל לשניים והשם השתנה מ-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 ומאפשר בדיקות הרמטיות של פעילות הדדית. הוא מאפשר לכותבי בדיקות לאמת ולבצע stub של כוונות יוצאות.
    • IntentsTestRule: מרחיב את ActivityTestRule, מאתחל ומשחרר את Espresso-Intents בבדיקות פונקציונליות של ממשק משתמש
  • espresso-core
    • ViewActions: נוספה האפשרות להריץ טענות גלובליות לפני הרצת פעולות. התכונה הזו שימושית למסגרות אחרות שמבוססות על Espresso כדי לאמת את מצב היררכיית התצוגה בזמן שחבילת הבדיקות הקיימת של Espresso מופעלת.
    • ViewMatchers.withContentDescription() resId עומס יתר
  • rules
    • ActivityTestRule: הכלל הזה מספק בדיקות פונקציונליות של פעילות אחת
    • הערות UiThreadRule ו-UiThreadTest: הכלל הזה מאפשר להריץ את שיטת הבדיקה עם ההערה UiThreadTest בשרשור הראשי של האפליקציה (או בשרשור ממשק המשתמש)
    • ServiceTestRule: הכלל הזה מספק בדיקות פונקציונליות של שירות
  • runner
    • ApplicationLifecycleCallback: קריאה חוזרת למעקב אחרי אירועים במחזור החיים של האפליקציה
    • מעכשיו אפשר לציין את כל הארגומנטים של ה-runner גם בקובץ Android manifest באמצעות תג <meta-data>
  • UIAutomator
    • הפרמטר UiDevice.dumpWindowHierarchy() מקבל עכשיו את הערכים File או OutputStream

תיקוני באגים

  • espresso
    • הפונקציה Cursor matcher מחזירה עכשיו false אם העמודה לא נמצאה, כדי ש-Hamcrest יוכל להמשיך לסמן הבא
    • NullPointerException עם PreferenceMatchers withTitle לא מתרחש יותר
    • ביטול הרישום של משאב בהמתנה לפעילות לא גורם יותר ל-Espresso לחשוב שיש לנו משאבים בהמתנה לפעילות שהם עסוקים
    • גרסה מעודכנת של Support Annotations שמשמשת את Espresso Contrib
  • runner
    • AndroidJUnit4 עכשיו המערכת מדלגת על בדיקות עם הנחות שגויות
  • UIAutomator
    • הפעלת כלי מעקב כדי למנוע StaleObjectException

שינויים בולטים אחרים

  • הוספת הודעת שגיאה משופרת כשאי אפשר להקליד טקסט עם מחרוזת שאינה לטינית

‫UIAutomator 2.0‏ (12.03.2015)

‫UI Automator מבוסס עכשיו על Android Instrumentation, ואפשר ליצור ולהריץ בדיקות באמצעות הפקודה ./gradlew connectedCheck.

‫Espresso גרסה 2.0, Test Runner גרסה 0.1 (הושקה בתאריך: 2014-12-19)

שינויי תוכנה שעלולים לגרום לכשלים

  • הספרייה Espresso עברה למרחב שמות חדש, מ-android.support.test.espresso ל-android.support.test.espresso
  • השם של ארטיפקטים של 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()
      • החלקה למעלה ולמטה
    • espresso-contrib
      • RecyclerViewActions: טיפול באינטראקציות עם RecyclerViews
      • PickerActions: טיפול באינטראקציות עם Date ועם Time
  • רכיבי התאמה
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers: התאמה לבדיקות פריסה שקשורות להתאמה לשוק הבינלאומי
    • CursorMatchers: אוסף של התאמות לאובייקטים מסוג Cursor
  • טענות
    • PositionAssertions, כולל isLeftOf() ו-isAbove(): אוסף של ViewAssertions לבדיקת המיקום היחסי של רכיבים במסך
    • LayoutAssertions: Assertions לבדיקת פריסה שקשורה ל-i18n
  • אפליקציית בדיקה: הרבה פעילויות או בדיקות חדשות לדוגמה
  • אחר
    • Espresso.unregisterIdlingResources() and Espresso.getIdlingResources(): מאפשר גמישות נוספת בעבודה עם IdlingResources
    • ViewInteraction.withFailureHandler(): מאפשר להחליף את ה-handler של הכשל מ-onView()
    • תמיכה ב-onData() מגובה על ידי CursorAdaptersAdapterViews

תיקוני באגים

  • ViewMatchers.isDisplayed() תואם לתצוגות שתופסות את כל המסך, אבל לא מוצגות יותר ב-90% לפחות
  • ביצוע פעולת החלקה לקריאה לפעולה DrawerActions.openDrawer() לא מוביל יותר לIdlingResourceTimeoutException

שינויים בולטים אחרים

  • המעבר מ-build עם Maven ל-Gradle
  • העברנו את התלויות של Espresso (Guava, ‏ Dagger, ‏ Hamcrest) כדי למנוע התנגשויות ב-DEX
  • השתנה כך שיחזיר הצלחה או כישלון כשרושמים ומבטלים רישום של משאבים לא פעילים
  • תמיכה ב-Lollipop: צריך להוסיף message.recycle() מאחורי ממשק כדי להתחשב בשינויים שקשורים לגרסה
  • החלפנו את רמת ה-SDK של היעד ל-21 – משפיע בעיקר על אפליקציית הבדיקה

גרסה 1.1 (הושקה בתאריך: 2014-01-08)

אספרסו

  • חדש swipeLeft ו-swipeRight ViewActions
  • תמיכה בריבוי חלונות: תכונה מתקדמת שמאפשרת לבחור את חלון היעד שבו Espresso צריך להריץ את הפעולה
  • שיפורים ב-TypeTextAction: אפשר להקליד טקסט בתצוגה שמוגדרת מראש, מה שמקל על הוספת טקסט
  • תיקנו באגים רבים

ספריית Espresso Contrib

  • הספרייה החדשה הזו מכילה תכונות שמשלימות את Espresso, אבל הן לא חלק מהספרייה המרכזית
  • חדש DrawerActions לפעולה ב-DrawerLayout: יש תלות ב-Android Support Library, ולכן אנחנו משאירים אותו מחוץ לספריית הליבה של Espresso

מבחנים לדוגמה

  • הבדיקות האלה הועברו לגרסה הפעילה באותו חבילה כמו אפליקציית הבדיקה
  • תוקנו קובצי Maven POM כדי להסיר תלות כפולה ב-guava, כך שmvn install אמור לפעול עכשיו