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
- New core-ktx kotlin extension artifact! כולל ActivityScenario.launchActivity API שמתאים ל-Kotlin
- ActivityScenario API חדש להפעלת פעילויות עם כוונות מותאמות אישית
- ActivityScenario API חדש לקבלת תוצאה של פעילות
- הוספת אפשרות לסגירת ActivityScenario
- Espresso
- שינוי של withResourceNameMatcher ו-HumanReadables כך שיהיו תואמים ל-API 28.
- צריך לעדכן את התיאור של ReplaceTextAction כך שיכלול את המחרוזת stringToBeSet
- תמיכה ב-Espresso במצב השהיה של Robolectric looper.
- JUnit
- ActivityScenarioRule API חדש, להפעלה וסגירה אוטומטיות של Activity בהגדרה ובביטול של בדיקה
- junit-ktx kotlin extension artifact חדש! כולל API של ActivityScenarioRule שמתאים ל-Kotlin
- 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
- פריט חדש! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
- שליפת ההקשר: ApplicationProvider
- שליטה במחזורי החיים של פעילויות: ActivityScenario(beta)
- Builders for MotionEvent, PackageInfo
- מחלקת כלי השירות Parceables
- פריט חדש! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
- Truth
- פריט חדש! כולל נושאי אמת בהתאמה אישית לגבי Notification, Intent, Bundle, Parcelable ו-MotionEvent
- JUnit
- פריט חדש! כולל את מחלקת ההרצה 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 במהלך העדכון לגרסה החדשה הזו. אנחנו מתנצלים על אי הנוחות שנגרמה לך.
- ה-API onView() ו-onData() מסומנים עכשיו ב- @CheckReturnValue כדי למנוע שגיאות
- תוקן קובץ ה-POM של espresso-core כך שלא ימשוך את התלות rules, אלא קובץ ה-POM של espresso-intents ימשוך אותה. השינוי הזה לא אמור להשפיע על מפתחים, כי אי אפשר להשתמש ב-espresso-intents בלי espresso-core.
- בעיה 65486414: חסרה תלות ב-guava ב-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}
- שינוי ב-API שגורם לבעיות:
- Espresso-remote
- זהו ארטיפקט חדש לגמרי. הפרדנו את כל הפונקציונליות של Espresso לריבוי תהליכים מחוץ לארטיפקט espresso-core. השיטה הזו נקייה יותר, והיא אמורה להקטין באופן משמעותי את הגודל הכולל של espresso-core ואת מספר השיטות.
- Runner
- חיתוך של מעקב אחר מחסנית אם הוא גדול מדי בשביל טרנזקציה של קובץ קשירה. מכיוון ש-AJUR צריך לדווח על כשלים בחזרה ל-AM באמצעות IPC של Binder, אנחנו צריכים לוודא שלא חורגים ממגבלת העסקאות של 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: קריסת Orchestrator בגלל 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עכשיו יש לו תשובה שאפשר להפעיל, וכך אפשר להריץ בדיקות אחרי שמתבצעת כוונה (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(עצמאי ללא הרצת בדיקות או תכונות של JUnit).
AndroidTestOrchestrator
- מטפלת עכשיו בבדיקות ריקות באותו אופן כמו בבדיקות לא מתואמות
AndroidJUnitRunner. - Orchestrator יכול עכשיו לטפל בפלט רגיל גדול מאוד מ-
AndroidJUnitRunner.
- מטפלת עכשיו בבדיקות ריקות באותו אופן כמו בבדיקות לא מתואמות
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28 באוגוסט 2017)
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- פריט מידע חדש שנוצר בתהליך הפיתוח (Artifact) של Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - כולל את הכיתות
IdlingScheduledThreadPoolExecutorו-IdlingThreadPoolExecutor
- פריט מידע חדש שנוצר בתהליך הפיתוח (Artifact) של Maven:
- API חדש שעוזר לסנכרן בקשות ותשובות ברשת.
- פריט מידע חדש שנוצר בתהליך הפיתוח (Artifact) של Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0 - כולל את
UriIdlingResourceclass
- פריט מידע חדש שנוצר בתהליך הפיתוח (Artifact) של Maven:
- תנאים חדשים להתאמה לתצוגה
espresso-core:- המחרוזת
hasBackground()תואמת למשאב drawable של הרקע של אובייקטView -
hasTextColor()תואם לצבע של אובייקטTextView
- המחרוזת
- שיטות חדשות לפעולות בתצוגה:
- פעולת הצפייה המשופרת
scrollTo()פועלת עם צאצאים שלListView -
repeatedlyUntil()– מבצע אתViewActionשצוין בתצוגה עד שהתצוגה תתאים לViewMatchersהרצוי
- פעולת הצפייה המשופרת
- שיטות חדשות של אספרסו:
-
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 Test Orchestrator
מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על
דיוק ובידוד. Orchestrator הוא תהליך תיוג עצמאי שיוצר תהליך הפעלה של תיוג לכל בדיקה ואוסף את התוצאות.
- קריסות של אפליקציות גורמות להפסקת הפעולה של כלי המעקב אחר הביצועים של הרצת הבדיקות, אבל לא של כלי התיאום, וכך חבילת הבדיקות יכולה להמשיך לפעול
- נדרשת התקנה של קובץ ה-APK של כלי התזמור –
'com.android.support.test:orchestrator:1.0.0' - לגרסה 1.0 יש ממשק שורת פקודה בלבד. אנחנו מתכננים לשלב אותה עם Android Studio ו-Firebase Test Lab
- Android Test Orchestrator
מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על
דיוק ובידוד. Orchestrator הוא תהליך תיוג עצמאי שיוצר תהליך הפעלה של תיוג לכל בדיקה ואוסף את התוצאות.
תיקוני באגים
- Espresso
- שיפור הסנכרון של תצוגת הבסיס כדי להפחית משמעותית את חוסר היציבות
- תיקון של קובץ
IdlingResourceRegistryפגום - סנכרון משופר של אובייקטים של
IdlingResource - בעיה 37132680: Espresso לא ממתין לסיום יצירת תיבת הדו-שיח לפני ביצוע הפעולה הבאה
- בעיה 37103280: צריך לשלוח את Espresso עם כללי צרכן של ProGuard, כדי שהצרכנים לא יצטרכו להוסיף אותם
- בעיה 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:
התעלמות מ-
@RequiresDeviceב-ABI של x86_64 -
בעיה 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 (22 בפברואר 2016, גרסה שקטה)
תכונות חדשות
- 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 של דוח קריסות לגבי 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 - תוקן באג שגרם לכך שפעילויות יתומות נתקעו בשלב ההפסקה
- צריך לעדכן את
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עם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: טיפול באינטראקציות עםRecyclerViewsPickerActions: טיפול באינטראקציות עם בוררי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(): מאפשר לבטל את הטיפול בשגיאות מ-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ו-swipeRightViewActions - תמיכה בריבוי חלונות: תכונה מתקדמת שמאפשרת לבחור את חלון היעד שבו Espresso צריך להריץ את הפעולה
- שיפורים ב-
TypeTextAction: אפשר להקליד טקסט בתצוגה שמוגדרת מראש, מה שמקל על הוספת טקסט - תיקנו באגים רבים
ספריית Espresso Contrib
- הספרייה החדשה הזו מכילה תכונות שמשלימות את Espresso, אבל הן לא חלק מהספרייה המרכזית
- חדש
DrawerActionsלפעולה ב-DrawerLayout: יש תלות ב-Android Support Library, ולכן אנחנו משאירים אותו מחוץ לספריית הליבה של Espresso
מבחנים לדוגמה
- הבדיקות האלה הועברו לגרסה הפעילה באותו חבילה כמו אפליקציית הבדיקה
- תוקנו קובצי Maven POM כדי להסיר תלות כפולה ב-guava, כך ש
mvn installאמור לפעול עכשיו