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
- Artifact חדש של תוסף Kotlin ל-core-ktx! כולל API של ActivityScenario.launchActivity שמתאים ל-Kotlin
- ActivityScenario API חדש להפעלת פעילויות באמצעות כוונות מותאמות אישית
- ActivityScenario API חדש לקבלת תוצאה של פעילות
- הוספת אפשרות לסגירת ActivityScenario
- Espresso
- שינוי של withResourceNameMatcher ו-HumanReadables כך שיהיו תואמים ל-API 28.
- צריך לעדכן את התיאור של ReplaceTextAction כך שיכלול את המחרוזת stringToBeSet
- תמיכה ב-Espresso במצב השהיה של Robolectric looper.
- JUnit
- API חדש של ActivityScenarioRule להפעלה ולסגירה אוטומטיות של Activity בהגדרת בדיקה ובניקוי שלה
- junit-ktx kotlin extension artifact חדש! כולל 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 לניפוי באגים של orchestrator עצמו
- Core
- פריט מידע חדש שנוצר בתהליך פיתוח (Artifact)! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
- אחזור ההקשר: ApplicationProvider
- שליטה במחזורי החיים של פעילויות: ActivityScenario(beta)
- Builders for MotionEvent, PackageInfo
- מחלקת כלי השירות Parceables
- פריט מידע חדש שנוצר בתהליך פיתוח (Artifact)! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
- Truth
- פריט מידע חדש שנוצר בתהליך פיתוח (Artifact)! כולל נושאי אמת בהתאמה אישית לגבי התראות, כוונות, חבילות, 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 (16 באפריל 2018)
- Espresso
- שינוי משמעותי ב-API:
- הובא לידיעתנו בבעיה 64062890 שהשתמשנו ב-Guava Optional ב-API הציבורי שלנו. זו הייתה טעות חמורה מצדנו . כתוצאה מכך, בגרסה הזו יש שינוי ב-API הציבורי שעלול לגרום לבעיות, והוא נועד לפתור את הבעיה הזו. הוספנו wrapper מכוער סביב המחלקה Guava Optional, שנקרא EspressoOptional ונמצא במרחב השמות android.support.test.espresso.util. מפתחים שהשתמשו ב-Guava Optional API שדלף צריכים לשנות את הייבוא וההפניות שלהם כדי להשתמש ב-EspressoOptional במהלך העדכון לגרסה החדשה הזו. אנחנו מתנצלים על אי הנוחות שנגרמה לך.
- ה-APIs onView() ו-onData() מסומנים עכשיו ב- @CheckReturnValue כדי למנוע שגיאות
- תוקן קובץ ה-POM של espresso-core כך שלא ימשוך את התלות rules, אלא קובץ ה-POM של espresso-intents. השינוי הזה לא אמור להשפיע על מפתחים, כי אי אפשר להשתמש ב-espresso-intents בלי espresso-core.
- בעיה 65486414: חסרה תלות של Espresso ב-Guava
- בעיה 65576174: הפונקציה Espresso IdlingResourceRegistry.sync גורמת לבדיקה השנייה להיכשל
- בעיה 65568629: Espresso.onIdle לא משתמש ב-IdlingRegistry
- בעיה 69333598: espresso 3.0.1 לא תואם ל-play-services-auth:11.6.0 במודול ספריית Android.
- בעיה 64062890: Internal Optional type exposed by AdapterViewProtocol interface
- בעיה 64091847: אסור ש-Espresso 3.0.0 יהיה תלוי ב-test runner
- בעיה 73722050: חבילות espresso-contrib 3.0.2-alpha1 android.arch.{lifecycle/core} classes
- שינוי משמעותי ב-API:
- Espresso-remote
- זהו ארטיפקט חדש לגמרי. הפרדנו את כל הפונקציונליות של Espresso שקשורה לריבוי תהליכים מחוץ לארטיפקט espresso-core. השיטה הזו נקייה יותר, והיא אמורה להקטין באופן משמעותי את הגודל הכולל של espresso-core ואת מספר השיטות.
- Runner
- חיתוך של דוח קריסות אם הוא גדול מדי בשביל טרנזקציה של קובץ קשירה. מכיוון ש-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: Test Orchestrator צריך להריץ את הפקודה 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יש עכשיו תגובה שאפשר להפעיל, כך שאפשר להריץ בדיקות אחרי תפיסת כוונת שהופעלה אבל לפני החזרת אובייקט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(עצמאי ללא תכונות של הרצת בדיקות או 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- במקום להשתמש ב-
registerIdlingResources(), צריך להשתמש ב-getInstance().register().
- במקום להשתמש ב-
- Guava מועבר עכשיו באמצעות jarjar למרחב שמות 'פנימי' אחר – אם אתם משתמשים בטעות ב-Guava API דרך מרחבי השמות של Espresso, יכול להיות שתיתקלו בבעיות
- הסרת כל ההפניות ל-Guava מוצללת (
.core.deps.guava.) - שדרוג גרסת ספריית התמיכה לגרסה 25.4.0 ומעלה
- הסרת כל ההפניות ל-Guava מוצללת (
- הוסרה המחלקה
בעיות מוכרות
- AndroidTestOrchestrator
- כרגע אין תמיכה בארגומנטים של הרצת
-e numShardsו--e shardIndex - בדיקות עם פרמטרים לא נתמכות כרגע
- כרגע אין תמיכה בארגומנטים של הרצת
תכונות חדשות
- Espresso
- תמיכה ב-Multiprocess Espresso חדש ב-API 26 ל-
espresso-coreול-espresso-web, אבל לא ל-espresso-contrib - ממשק API חדש ופשוט יותר
IdlingRegistry- פורסם במסגרת
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - שיטות שהוצאו משימוש:
- פורסם במסגרת
- API חדש שיעזור בסנכרון מול
Executors- New maven artifact:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - כולל את השיעורים
IdlingScheduledThreadPoolExecutorו-IdlingThreadPoolExecutor
- New maven artifact:
- API חדש שעוזר לסנכרן בקשות ותשובות ברשת.
- New maven artifact:
com.android.support.test.espresso.idling:idling-net:3.0.0 - כולל את
UriIdlingResourceclass
- New maven artifact:
- תנאים חדשים להתאמה לתצוגה
espresso-core:-
hasBackground()תואם לרקע של אובייקטView, שהוא פריט גרפי שניתן להזזה -
hasTextColor()תואם לצבע של אובייקטTextView
-
- שיטות חדשות לפעולות בתצוגה:
- שיפור הפעולה
scrollTo()view כדי לעבוד עם צאצאים שלListView -
repeatedlyUntil()– מבצע את הפעולהViewActionשצוינה בתצוגה עד שהתצוגה תתאים לViewMatchersהרצוי
- שיפור הפעולה
- שיטות חדשות של Espresso:
-
pressBackUnconditionally()– דומה ל-pressBack()אבל לא יוצר חריג כש-Espresso מנווט -
noActivity()– לא צריך לחכות לפעילות לפני שמבצעיםViewActionאוViewAssertion -
onIdle()– מבצע לולאה של ה-thread הראשי עד שהאפליקציה בלי פעילות -
onIdle(Callable<T>)– זהה ל-onIdle(), אבל מקבל פרמטר נוסףCallable, שמופעל אחרי שהאפליקציה עוברת למצב בלי פעילות
-
webScrollIntoView()– Newespresso-webatom that allows you to scroll inside aWebView
- תמיכה ב-Multiprocess Espresso חדש ב-API 26 ל-
- 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שיכולות לקבוע אם ואיך הן יכולות לפעול מול כיתה ספציפית
-
- כללים
-
ProviderTestRule– API חדש לבדיקת אובייקטים שלContentProvider -
getActivityResult()ו-ActivityResultMatchers– API חדש לאחזור תוצאת הפעילות של פעילות שנקראהsetResult()
-
- AndroidTestOrchestrator
- תזמור בדיקות ל-Android מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על דיוק ובידוד. Orchestrator הוא תהליך עצמאי של הגדרת תיוג, שיוצר תהליך אחד של הפעלת הגדרת תיוג לכל בדיקה ואוסף את התוצאות.
- קריסות של אפליקציות גורמות להפסקת הפעולה של כלי המעקב אחר הביצועים של הרצת הבדיקות, אבל לא של כלי התיאום, ולכן חבילת מקרים לבדיקה יכולה להמשיך לפעול
- נדרשת התקנה של קובץ ה-APK של כלי התזמור –
'com.android.support.test:orchestrator:1.0.0' - לגרסה 1.0 יש ממשק שורת פקודה בלבד. אנחנו מתכננים לשלב אותה עם Android Studio ועם Firebase Test Lab
- תזמור בדיקות ל-Android מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על דיוק ובידוד. Orchestrator הוא תהליך עצמאי של הגדרת תיוג, שיוצר תהליך אחד של הפעלת הגדרת תיוג לכל בדיקה ואוסף את התוצאות.
תיקוני באגים
- Espresso
- שיפור הסנכרון של תצוגת הבסיס כדי להפחית משמעותית את חוסר היציבות
- תיקון קובץ פגום של
IdlingResourceRegistry - סנכרון משופר של אובייקטים של
IdlingResource - בעיה 37132680: Espresso לא ממתין לסיום יצירת תיבת הדו-שיח לפני ביצוע הפעולה הבאה
- בעיה 37103280: צריך לשלוח את כללי הצרכן של ProGuard עם Espresso כדי שהצרכנים לא יצטרכו להוסיף אותם
- בעיה 37094726: Espresso Intents contains unnecessary application label
- בעיה 37093953: Espresso: No available check for null/empty error text
- בעיה 37071776: הטמעות של
espresso-coreקבצים של Guava.pom - בעיה 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:
@RequiresDeviceignored on x86_64 ABI -
בעיה 37101485: המערכת מתעלמת מחלק מהארגומנטים שמוגדרים בקובץ המניפסט של
AndroidJUnitRunner, כמו גודל הבדיקה, ההערה והניפוי באגים - בעיה 37082857: ביצוע בדיקות חצי מקביליות של Espresso נכשל באובייקטים סטטיים
-
בעיה 37063396: ההקשר לא אותחל
עם
ProviderTestCase2(גורם ל-NullPointerException)
-
תיקון היכולת להשתמש ב-
- כללים
- תוקן מחזור החיים של
ActivityTestRuleכדי לאחד את ההתנהגות בין אתחול רגיל לאתחול עצלני שלActivityTestRule - בעיה 37079943: תיקון
ServiceTestRuleכדי לאפשר קישור מחדש - בעיה 37109342: הוספה של
getActivityResult()ושלActivityResultMatchers
- תוקן מחזור החיים של
- UiAutomator
-
setUiAutomationFlags()לשימוש עםUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES– האפשרות הזו מאפשרת להשתמש ב-UiAutomatorבזמן ששירותי נגישות אחרים פועלים - בעיה 37082813:
setText()באובייקטים ריקים שלEditTextמתרחשת שגיאהNullPointerExceptionאם רמת ה-API היא 19 ומטה
-
שינויים חשובים אחרים
- קבצים בינאריים מתפרסמים עכשיו דרך Google Maven
- הקטנת הגודל של קובצי JAR
espresso-coreו-espresso-web– עכשיו מוחל ProGuard על תלות מוטמעת - כל קובצי
.aarכוללים עכשיו כללי ProGuard - הוספת קבצים של
proguard_library.cfgלארטיפקטים שפורסמו - בממשק
Tapperיש גרסה חדשה שלsendTap()להטמעה
תכנים חיצוניים שנוספו
- Espresso
- Runner
- כללים
Espresso 2.2.2, Runner/Rules 0.5 (2016-02-22, גרסה שקטה)
תכונות חדשות
- espresso
- בעיה 194253: הוספת תמיכה ב-NavigationView בספריית התמיכה של עיצוב Android
- נוספו בדיקות לאנימציות ולמעברים שהופעלו
-
ViewMatcherAPI חדש:withResourceName()
תיקוני באגים
- espresso
- בעיה 195331: espresso-core מטמיע קובצי pom של guava
- העברנו את הספירה של משאב בהמתנה לפעילות מ-espresso-contrib
- rules
- בעיה 187249: NPE ב-
Intents.release()
- בעיה 187249: NPE ב-
- runner
- בעיה מספר 196066: הארגומנט
-e log trueב-AndroidJUnitRunnerלא מדלג על הבדיקה בפועל - המתנה לכלי לניפוי באגים ב-
onCreate()של הרצת הבדיקה - העברנו את כל הערות הבדיקה הנתמכות מהפלטפורמה אל ATSL
- הוסר ה-dump של דוח קריסות לגבי no JSBridge
- תוקן
AndroidAnnotatedBuilder
- בעיה מספר 196066: הארגומנט
שינויים חשובים אחרים
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:
DrawerActionsno longer leakparentListener - 153303: הגדרת כוח המשיכה בבדיקות של 'חלונית ההזזה פתוחה או סגורה'
- 157910: הוספת
DrawerLayoutopen ו-close action factories
- 157911: הוספת התאמה של תצוגה לסוג קלט באובייקט
תיקוני באגים
- espresso
ViewActions.closeSoftKeyboard()מוודא עכשיו שהמקלדת הווירטואלית נעלמת לגמרי- תוקנה בעיה בסנכרון עם השיטה
Espresso.pressBack()של Espresso ברמת API 21 ומעלה - תוקן סנכרון של אנימציות סגירה של מקלדת ב-API ברמה 23
- rules
- תוקן
ServiceTestRuleברמת API 23, תמיד צריך לקרוא ל-startService()עםIntentמפורש
- תוקן
- runner
- תוקנה התמיכה ב-gradle
JaCoCo - תוקנה תמיכה פגומה בחלוקת בדיקות
- תוקן מצב לא עקבי בכלי להרצת בדיקות אחרי פסק זמן של בדיקת סגנון
JUnit3
- תוקנה התמיכה ב-gradle
שינויים חשובים אחרים
- תיקונים ב-Javadoc ושיפורים בהודעות השגיאה
- התעלמות משיטות
suite()ואי התעלמות משגיאות הפעלה כשמשתמשים במסנני שיטות
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
- בדיקות נגישות
- תמיכה ב-Gravity
DrawerActions
- rules 0.3
- כלל אחד (
DisableOnAndroidDebug)
- כלל אחד (
- runner 0.3
- שדרוג מ-JUnit v4.10 ל-JUnit v4.12
- הועבר לשימוש ב-Hamcrest גרסה 1.3
תיקוני באגים
- תוקנה דליפה של
DrawerActionsParentListener - הנחה שגויה מטופלת עכשיו כבדיקה להתעלמות ולא כבדיקה שנכשלה
- תוקנה בעיה שגרמה לדליפת מופעים של פעילות ב-
MonitoringInstrumentationדרךExecutorService - תוקן באג שגרם לפעילויות יתומות להיתקע בשלב 'הופסקה'
- הפונקציה Update
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 ומאפשר בדיקות הרמטיות של אינטראקטיביות, בכך שהוא מאפשר לכותבי בדיקות לאמת ולבצע stubbing של כוונות יוצאות
-
IntentsTestRule: מרחיב אתActivityTestRule, מאתחל ומשחרר את Espresso-Intents בבדיקות פונקציונליות של ממשק משתמש
-
- espresso-core
ViewActions: נוספה האפשרות להריץ טענות גלובליות לפני הרצת פעולות. האפשרות הזו שימושית למסגרות אחרות שמבוססות על Espresso כדי לאמת את מצב היררכיית התצוגה בזמן שחבילת מקרים לבדיקה הקיימת של Espresso מופעלתViewMatchers.withContentDescription()resIdעומס יתר
- rules
-
ActivityTestRule: הכלל הזה מספק בדיקות פונקציונליות של פעילות אחת - הערות
UiThreadRuleו-UiThreadTest: הכלל הזה מאפשר להריץ את שיטת הבדיקה עם ההערהUiThreadTestבשרשור הראשי של האפליקציה (או בשרשור UI) -
ServiceTestRule: הכלל הזה מספק בדיקות פונקציונליות של שירות
-
- runner
ApplicationLifecycleCallback: קריאה חוזרת למעקב אחרי אירועים במחזור החיים של האפליקציה- מעכשיו אפשר לציין את כל הארגומנטים של ה-runner גם בקובץ Android manifest באמצעות תג
<meta-data>
- UIAutomator
- הפרמטר
UiDevice.dumpWindowHierarchy()יכול לקבל עכשיו את הערךFileאוOutputStream
- הפרמטר
תיקוני באגים
- espresso
- הפונקציה Cursor matcher מחזירה עכשיו
falseאם העמודה לא נמצאה, כדי ש-Hamcrest יוכל להמשיך לסמן הבא -
NullPointerExceptionעםPreferenceMatcherswithTitleלא מופיע יותר - ביטול הרישום של משאב בהמתנה לפעילות לא גורם יותר למערכת Espresso לחשוב שיש משאבים בהמתנה לפעילות שהם עמוסים
- גרסה מעודכנת של Support Annotations שמשמשת את Espresso Contrib
- הפונקציה Cursor matcher מחזירה עכשיו
- 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()
תכונות חדשות
- פעולות
ViewActionsreplaceText()openLink()- החלקה למעלה ולמטה
- espresso-contrib
RecyclerViewActions: טיפול באינטראקציות עםRecyclerViews-
PickerActions: מטפל באינטראקציות עםDateועם בורריTime
- אמצעי התאמה
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()withSpinnerText()withHint()isSelected()hasLinks()
-
LayoutMatchers: התאמות לבדיקות פריסה שקשורות ללוקליזציה -
CursorMatchers: אוסף של התאמות לאובייקטים מסוגCursor
- טענות
-
PositionAssertions, כוללisLeftOf()ו-isAbove(): אוסף שלViewAssertionsלבדיקת המיקום היחסי של רכיבים במסך -
LayoutAssertions: Assertions לבדיקת פריסה שקשורה ל-i18n
-
- אפליקציית בדיקה: הרבה פעילויות או בדיקות חדשות לדוגמה
- אחר
-
Espresso.unregisterIdlingResources()andEspresso.getIdlingResources(): מאפשר גמישות נוספת בעבודה עםIdlingResources ViewInteraction.withFailureHandler(): מאפשר להחליף את ה-handler של הכשל מ-onView()- תמיכה ב-
onData()AdapterViewsמגובה על ידיCursorAdapters
-
תיקוני באגים
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ו-swipeRightViewActions - תמיכה בריבוי חלונות: תכונה מתקדמת שמאפשרת לבחור את חלון היעד שבו Espresso צריך להריץ את הפעולה
- שיפורים ב-
TypeTextAction: אפשר להקליד טקסט בתצוגה שמוגדרת מראש, מה שמקל על הוספת טקסט - תיקנו באגים רבים
ספריית Espresso Contrib
- הספרייה החדשה הזו מכילה תכונות שמשלימות את Espresso, אבל הן לא חלק מהספרייה המרכזית
- חדש
DrawerActionsלפעולה ב-DrawerLayout: יש תלות בספריית התמיכה של Android, ולכן אנחנו משאירים אותה מחוץ לספריית הליבה של Espresso
בדיקות לדוגמה
- הבדיקות האלה הועברו לגרסה הפעילה באותו חבילה כמו אפליקציית הבדיקה
- תוקנו קובצי Maven POM כדי להסיר תלות כפולה ב-guava, כך ש
mvn installאמור לפעול עכשיו