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
- פריט מידע שנוצר בתהליך פיתוח (Artifact) חדש! כולל ממשקי API חדשים שתומכים בבדיקות מקומיות ובבדיקות במכשיר עבור:
- 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}
- שינוי ב-API שגורם לבעיות:
- 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
- צריך להשתמש ב-
getInstance().register()
במקום ב-registerIdlingResources()
- צריך להשתמש ב-
- 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
- כולל את
UriIdlingResource
class
- פריט מידע חדש שנוצר בתהליך הפיתוח (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-web
atom 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 Labs
- Android Test Orchestrator
מספק דרך חדשה לאיסוף ולהרצה של בדיקות, עם דגש על
דיוק ובידוד. Orchestrator הוא תהליך עצמאי של הגדרת תיוג, שיוצר תהליך אחד של הפעלת הגדרת תיוג לכל בדיקה ואוסף את התוצאות.
תיקוני באגים
- 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
)
-
תיקון היכולת להשתמש ב-
- כללים
- תוקן מחזור החיים של
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
- נוספו בדיקות לאנימציות ולמעברים שהופעלו
-
ViewMatcher
API חדש: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:
DrawerActions
no longer leakparentListener
- 153303: הגדרת כוח המשיכה בבדיקות של 'המגירה פתוחה או סגורה'
- 157910: הוספת
DrawerLayout
open ו-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()
ואי התעלמות משגיאות 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
- הפונקציה 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()
תכונות חדשות
- פעולות
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()
andEspresso.getIdlingResources()
: מאפשר גמישות נוספת בעבודה עםIdlingResources
-
ViewInteraction.withFailureHandler()
: מאפשר להחליף את ה-handler של הכשל מ-onView()
- תמיכה ב-
onData()
מגובה על ידיCursorAdapters
AdapterViews
-
תיקוני באגים
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
אמור לפעול עכשיו