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-12-2018)
นี่คือรุ่นเสถียรของ AndroidX Test 1.1.0
- แกน
- ทำให้ 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 (06-12-2018)
- แกน
- อาร์ติแฟกต์ส่วนขยาย Kotlin หลัก-ktx ใหม่ มี ActivityScenario.launchActivity API ที่เหมาะกับ Kotlin
- API ActivityScenario ใหม่สำหรับการเปิดใช้กิจกรรมด้วย Intent ที่กำหนดเอง
- ActivityScenario API ใหม่สำหรับการรับผลลัพธ์ของกิจกรรม
- ทำให้ ActivityScenario ปิดได้
- Espresso
- แก้ไข withResourceNameMatcher และ HumanReadables ให้เข้ากันได้กับ API 28
- อัปเดตคำอธิบายของ ReplaceTextAction ให้มีสตริงที่จะตั้งค่า
- รองรับ Espresso ในโหมด Looper ที่หยุดชั่วคราวของ Robolectric
- JUnit
- ActivityScenarioRule API ใหม่สำหรับการเปิดและปิดกิจกรรมโดยอัตโนมัติในการตั้งค่าและการล้างข้อมูลการทดสอบ
- อาร์ติแฟกต์ส่วนขยาย Kotlin ของ junit-ktx ใหม่ มี API ของ ActivityScenarioRule ที่เหมาะกับ Kotlin
- Runner
- ทำให้แพ็กเกจ -e และ testFile -e มีลักษณะการทำงานที่สอดคล้องกันเมื่อได้รับ แพ็กเกจ
- ความจริง
- เพิ่ม API ของ Bool, Parcelable และ ParcelableAsType BundleSubject
AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (24-10-2018)
- ทั้งหมด
- ตั้งค่า minSdkVersion เป็น 14 และ targetSdkVersion เป็น 28
- Espresso
- แก้ไขด้วย ContentDescription เพื่อให้ทำงานกับประเภทที่ไม่ใช่สตริงได้
- เพิ่มการรองรับการใช้ Espresso ใน Robolectric
- ปัญหา 72798625: Espresso ViewMatchers.withText ไม่ทํางานเมื่อเปิดใช้ textAllCaps
- เพิ่มการรองรับการแทรกลำดับเหตุการณ์การเคลื่อนไหว
- Intent
- เพิ่ม API เวอร์ชันเบต้าสำหรับการดึงรายการความตั้งใจ มีไว้สำหรับใช้กับการยืนยันความจริงใหม่
- Runner
- เพิ่มการรองรับ Instant Apps
- เลิกใช้งาน androidx.test.runner.AndroidJUnit4 และแทนที่ด้วย androidx.test.ext.junit.runners.AndroidJUnit4
- ตรวจสอบ
- เลิกใช้งาน androidx.test.InstrumentationRegistry และแทนที่ด้วย androidx.test.platform.app.InstrumentationRegistry และ androidx.test.core.app.ApplicationProvider
- AndroidTestOrchestrator
- เปิดใช้การจัดการความครอบคลุมของ Orchestrator ก็ต่อเมื่อมีการส่งทั้งอาร์กิวเมนต์ "coverage" และ "coverageFilePath"
- รอโปรแกรมแก้ไขข้อบกพร่องเฉพาะเมื่อตั้งค่า -debug แต่ไม่ต้องรอสำหรับกรณีทดสอบ ATO ของข้อมูล เพิ่มแฟล็ก orchestratorDebug ใหม่สำหรับการแก้ไขข้อบกพร่องของ Orchestrator เอง
- แกน
- อาร์ติแฟกต์ใหม่ รวมถึง API ใหม่ที่รองรับการทดสอบทั้งในเครื่องและในอุปกรณ์สำหรับรายการต่อไปนี้
- การเรียกบริบท: ApplicationProvider
- การควบคุมวงจรของกิจกรรม: ActivityScenario(เบต้า)
- Builders สำหรับ MotionEvent, PackageInfo
- คลาสยูทิลิตี Parceables
- อาร์ติแฟกต์ใหม่ รวมถึง API ใหม่ที่รองรับการทดสอบทั้งในเครื่องและในอุปกรณ์สำหรับรายการต่อไปนี้
- ความจริง
- อาร์ติแฟกต์ใหม่ รวมถึงหัวข้อความจริงที่กำหนดเองสำหรับ 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-04-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 ดึงแทน การเปลี่ยนแปลงนี้ควรเป็นการเปลี่ยนแปลง NoOp สำหรับนักพัฒนาแอป เนื่องจากใช้ espresso-intents ไม่ได้หากไม่มี espresso-core
- ปัญหา 65486414: Espresso ไม่มีทรัพยากร Dependency ของ Guava
- ปัญหา 65576174: Espresso IdlingResourceRegistry.sync ทำให้การทดสอบครั้งที่ 2 ล้มเหลว
- ปัญหา 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 ซึ่งอยู่ที่ 1 MB ต่อกระบวนการ
- ปัญหา 65828576: TestRequestBuilder ขัดข้องเมื่อเรียกใช้การทดสอบในคลาสที่มี @Ignore
- ปัญหา 37057596: เราไม่จัดการความล้มเหลวใน @BeforeClass
- กฎ
- อย่าลืมเผยแพร่ข้อมูลอ้างอิงเกี่ยวกับกิจกรรมที่อยู่ระหว่างการทดสอบหลังจากมีการเปลี่ยนแปลงวงจร ในระหว่างการทดสอบ ตอนนี้คุณสามารถจัดการกิจกรรมได้โดยตรงโดยใช้การอ้างอิงที่ได้รับจาก #getActivity() หากกิจกรรมเสร็จสิ้นและเปิดใช้ใหม่ การอ้างอิงที่ #getActivity() ส่งคืนจะชี้ไปยังอินสแตนซ์ปัจจุบันของกิจกรรมเสมอ
- ปัญหา 64389280: GrantPermissionRule ไม่ได้ระบุ WRITE_EXTERNAL_STORAGE
- ปัญหา 37065965: ActivityTestRule ทำให้กิจกรรมรั่วไหลหลังจากเปลี่ยนการวางแนว
- ปัญหา 75254050: ActivityTestRule ไม่อัปเดตอินสแตนซ์ Activity ระหว่างการเปลี่ยนแปลงการกำหนดค่า
- ปัญหา 64464625: ไม่สามารถทำงาน UI ในเมธอด finish() ของกิจกรรมได้
- AndroidTestOrchestrator
- ส่งแฟล็ก
-e coverage true -e coverageFilePath /sdcard/foo/
เพื่อสร้างไฟล์ความครอบคลุมในตำแหน่งที่ระบุ (แอปต้องมีสิทธิ์เขียนไปยังตำแหน่งที่ระบุ) ตอนนี้รูปแบบการตั้งชื่อไฟล์ความครอบคลุมมีลักษณะดังนี้com.foo.Class#method1.ec
โปรดทราบว่าระบบจะรองรับการดำเนินการนี้เมื่อเรียกใช้ในโหมดแยกเท่านั้น นอกจากนี้ ยังใช้ร่วมกับแฟล็กcoverageFile
ของ AndroidJUnitRunner ไม่ได้ เนื่องจากไฟล์ความครอบคลุมที่สร้างขึ้นจะเขียนทับกัน - ส่งแฟล็ก
-e clearPackageData
หากต้องการให้ตัวจัดสรรเรียกใช้คำสั่งpm clear context.getPackageName()
และpm clear targetContext.getPackageName()
ระหว่างการเรียกใช้การทดสอบ โปรดทราบว่าบริบทในคำสั่ง clear คือบริบทของแอปที่อยู่ระหว่างการทดสอบ - แก้ไขแล้ว - เมื่อเรียกใช้การทดสอบที่ว่างเปล่า หรือไม่มี @Test ภายในเป้าหมาย ผลการทดสอบจะแตกต่างจากโหมดเดิม
- ปัญหา 72758547: Test Orchestrator ทำให้ข้อมูลความครอบคลุมของ Jacoco ไม่สมบูรณ์ มีเพียงข้อมูลการทดสอบครั้งล่าสุดเท่านั้น
- ปัญหา 67916042: Android Test Orchestrator : การดำเนินการหยุดลงเนื่องจากกระบวนการขัดข้องเนื่องจากหน่วยความจำไม่เพียงพอ
- ปัญหา 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 (05-12-2017)
Espresso
Intents
มีการตอบกลับที่เรียกใช้ได้แล้ว ซึ่งช่วยให้การทดสอบดำเนินการได้หลังจาก บันทึก Intent ที่เริ่มทำงาน แต่ก่อนที่จะส่งคืนออบเจ็กต์Instrumentation.ActivityResult
Runner
แยก Maven Artifact ของ Monitor
com.android.support.test:monitor:<version>
สำหรับผู้ใช้ที่ต้องการMonitoringInstrumentation
โดยไม่ต้องเรียกใช้การทดสอบและฟีเจอร์ JUnitหากคุณใช้
com.android.support.test:runner:<version>
ทุกอย่าง จะทำงานได้ตามที่คาดไว้ เนื่องจาก Gradle จะดึงโมดูลmonitor
มาเป็นทรัพยากร Dependency ของโมดูล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-08-2017)
Espresso
- เพิ่มตัวเลือก
IdlingPolicy
เพื่อระงับonTimeout()
เมื่อแนบโปรแกรมแก้ไขข้อบกพร่องแบบทีละขั้นตอนกับ VM - ปัญหา 64024656, 64247586
และ 64525881: อย่ารายงานความล้มเหลวสำหรับการโหลดคลาสที่ไม่สำเร็จ
เว้นแต่ผู้ใช้จะโหลดคลาสที่เฉพาะเจาะจงโดย
รวมอาร์กิวเมนต์ตัวเรียกใช้คลาส
-e
- ปัญหา 64877246: เพิ่มคลาสที่ขาดหายไปในไฟล์ JAR ของแหล่งที่มา
- เพิ่มตัวเลือก
Runner
ShardingFilter
ตรรกะที่ง่ายขึ้น- ปัญหา 65025743:
@RequiresDevice
ตัวกรองรองรับโปรแกรมจำลอง FTL แล้ว
AndroidTestOrchestrator
- อย่าทำซ้ำการรายงานที่ล้มเหลว เมื่อกระบวนการทดสอบขัดข้องหลังจาก ล้มเหลว ตอนนี้ระบบจะรายงานเฉพาะความล้มเหลว 1 รายการสำหรับการทดสอบ
- แก้ไข 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-07-2017, ประกาศ)
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- อาร์ติแฟกต์ทั้งหมด
- เลิกให้การสนับสนุน API ระดับต่ำกว่า 15 แต่ SDK ขั้นต่ำยังคงชี้ไปที่ API ระดับ 9 เพื่อให้เวลาผู้ใช้อัปเกรด
- Espresso
- เราได้ลบและย้ายคลาส
android.support.test.espresso.contrib.CountingIdlingResource
ที่เลิกใช้งานแล้วไปที่android.support.test.espresso.idling.CountingIdlingResource
- ตอนนี้ Guava ได้รับการ jarjar'd ไปยังเนมสเปซ "ภายใน" อื่นแล้ว หากคุณใช้ Guava API ผ่านเนมสเปซ Espresso โดยไม่ตั้งใจ คุณอาจเห็นการหยุดทำงาน
- นำการอ้างอิงถึง Guava ที่มีการแรเงา (
.core.deps.guava.
) ออก - อัปเกรด Support Library เป็นเวอร์ชัน 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
- อาร์ติแฟกต์ Maven ใหม่
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- มีคลาส
IdlingScheduledThreadPoolExecutor
และIdlingThreadPoolExecutor
- อาร์ติแฟกต์ Maven ใหม่
- API ใหม่ที่จะช่วยซิงค์กับคำขอและการตอบกลับของเครือข่าย
- อาร์ติแฟกต์ Maven ใหม่
com.android.support.test.espresso.idling:idling-net:3.0.0
- มี
UriIdlingResource
class
- อาร์ติแฟกต์ Maven ใหม่
- ตัวระบุการจับคู่มุมมองใหม่ของ
espresso-core
hasBackground()
ตรงกับทรัพยากร Drawable ของView
ออบเจ็กต์hasTextColor()
ตรงกับสีของออบเจ็กต์TextView
- วิธีการดำเนินการดูใหม่
- ปรับปรุง
scrollTo()
การดำเนินการดูให้ทำงานร่วมกับองค์ประกอบย่อยของListView
repeatedlyUntil()
– ดำเนินการViewAction
ที่ระบุในมุมมองจนกว่า มุมมองจะตรงกับViewMatchers
ที่ต้องการ
- ปรับปรุง
- วิธีการใหม่ของ Espresso
pressBackUnconditionally()
– คล้ายกับpressBack()
แต่ จะไม่ทิ้งข้อยกเว้นเมื่อ Espresso นำทางnoActivity()
– ไม่ต้องรอให้กิจกรรมเกิดขึ้นก่อนจึงจะดำเนินการViewAction
หรือViewAssertion
ได้onIdle()
– วนซ้ำเทรดหลักจนกว่าแอปจะไม่มีการใช้งานonIdle(Callable<T>)
– เหมือนกับonIdle()
แต่ใช้Callable
เพิ่มเติมเป็นพารามิเตอร์ ซึ่งจะเรียกใช้หลังจากที่แอปไม่ได้ใช้งาน
webScrollIntoView()
–espresso-web
อะตอมใหม่ที่ให้คุณเลื่อนภายในWebView
- Multiprocess Espresso
ใหม่รองรับ API 26 สำหรับ
- Runner
-
InterceptingActivityFactory
และSingleActivityFactory
- มีฟีเจอร์สำหรับ ทดสอบกิจกรรมแยกจากโลกภายนอกโดยการลบล้าง เมธอดต่างๆ เช่นstartService()
และsendBroadcast()
-
เพิ่มการรองรับการใช้ JUnitParams
กับ
AndroidJUnitRunner
-
เริ่มจัดการ
@UiThreadTest
ที่ระดับโปรแกรมเรียกใช้การทดสอบหลักและ เลิกใช้งาน@UiThreadTestRule
– การดำเนินการนี้ช่วยให้ใช้ คำอธิบายประกอบ@UiThreadTest
โดยตรงในเมธอดที่มีคำอธิบายประกอบ ด้วย@Before
และ@After
-
ตอนนี้คำอธิบายประกอบ
@SdkSupress
รองรับ ค่าmaxSdkVersion
(ปัญหา 37067792) -
-e classLoader
– เพิ่มความสามารถในการส่งตัวโหลดคลาส โดยใช้อาร์กิวเมนต์ของโปรแกรมเรียกใช้ -
-e filter
– เพิ่มการรองรับตัวกรอง JUnit ที่กำหนดเองเพื่อระบุโดยใช้อาร์กิวเมนต์ของ Runner -
-e runnerBuilder
- ช่วยให้นักพัฒนาแอปสามารถระบุการใช้งานของตนเองสำหรับRunnerBuilder
ที่สามารถกำหนดได้ว่าควรเรียกใช้กับคลาสที่เฉพาะเจาะจงหรือไม่และอย่างไร
-
- กฎ
ProviderTestRule
– API ใหม่สำหรับทดสอบออบเจ็กต์ContentProvider
getActivityResult()
และActivityResultMatchers
– API ใหม่เพื่อดึงผลลัพธ์กิจกรรมของกิจกรรมที่เรียกใช้setResult()
- AndroidTestOrchestrator
- Android Test Orchestrator
มีวิธีใหม่ในการรวบรวมและเรียกใช้การทดสอบ โดยเน้นที่
ความถูกต้องและการแยก Orchestrator เป็นกระบวนการใช้เครื่องมืออิสระ
ซึ่งสร้างกระบวนการเรียกใช้เครื่องมือ 1 รายการสำหรับการทดสอบแต่ละครั้งและ
รวบรวมผลลัพธ์
- แอปพลิเคชันขัดข้องจะทำให้การวัดผลของโปรแกรมเรียกใช้หยุดทำงาน แต่จะไม่ทำให้ Orchestrator หยุดทำงาน ซึ่งจะช่วยให้ชุดทดสอบทำงานต่อไปได้
- ต้องติดตั้ง APK ของ Orchestrator –
'com.android.support.test:orchestrator:1.0.0'
- เวอร์ชัน 1.0 มีเฉพาะอินเทอร์เฟซบรรทัดคำสั่งเท่านั้น โดยมีแผนที่จะผสานรวมกับ Android Studio และ Firebase Test Lab
- Android Test Orchestrator
มีวิธีใหม่ในการรวบรวมและเรียกใช้การทดสอบ โดยเน้นที่
ความถูกต้องและการแยก Orchestrator เป็นกระบวนการใช้เครื่องมืออิสระ
ซึ่งสร้างกระบวนการเรียกใช้เครื่องมือ 1 รายการสำหรับการทดสอบแต่ละครั้งและ
รวบรวมผลลัพธ์
การแก้ไขข้อบกพร่อง
- Espresso
- ปรับปรุงการซิงค์มุมมองรากเพื่อลดความไม่เสถียรอย่างมาก
- แก้ไขความเสียหายของ
IdlingResourceRegistry
- การซิงค์กับออบเจ็กต์
IdlingResource
ที่ดียิ่งขึ้น - ปัญหา 37132680: Espresso ไม่รอให้การสร้างกล่องโต้ตอบ เสร็จสมบูรณ์ก่อนที่จะดำเนินการต่อไป
- ปัญหา 37103280: Espresso ควรจัดส่งกฎ ProGuard consumer เพื่อให้ผู้ใช้ไม่ต้องเพิ่มกฎดังกล่าว
- ปัญหา 37094726: Espresso Intents มีป้ายกำกับแอปพลิเคชันที่ไม่จำเป็น
- ปัญหา 37093953: Espresso: ไม่มีการตรวจสอบข้อความแสดงข้อผิดพลาดที่เป็นค่าว่าง/ว่าง
- ปัญหา 37071776:
espresso-core
ฝังไฟล์.pom
ของ Guava - ปัญหา 37062612: NPE ใน
release()
- ปัญหา 37063389: การมี Guava และ
espresso-web
เป็นการขึ้นต่อกันของandroidTest
จะคอมไพล์ไม่ได้ - ปัญหา 37070533: เพิ่มการรองรับ
NavigationView
ใน ไลบรารีการสนับสนุนการออกแบบของ Android
- Runner
-
แก้ไขความสามารถในการใช้
@UiThreadTest
ร่วมกับ@Test(timeout = 123)
- อาร์กิวเมนต์ของโปรแกรมเรียกใช้
-e notClass
แบบคงที่ - แก้ไข
-e log
เพื่อรองรับชุดการทดสอบ JUnit3 และ JUnit4 รวมถึงParameterized
และรันเนอร์Enclosed
- ปัญหา 37663530: รอให้กิจกรรมทั้งหมด เสร็จสิ้นก่อนและหลังแต่ละวิธีทดสอบ
- ปัญหา 37132680: Espresso ไม่รอ ให้การสร้างกล่องโต้ตอบเสร็จสมบูรณ์ก่อนที่จะดำเนินการถัดไป
-
ปัญหา 37123213:
@RequiresDevice
ไม่สนใจใน ABI ของ x86_64 -
ปัญหา 37101485: ระบบจะละเว้นอาร์กิวเมนต์บางอย่างที่ระบุไว้ในไฟล์ Manifest
สำหรับ
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 แล้ว
- ลดขนาดไฟล์
espresso-core
และespresso-web
JAR - ตอนนี้การฝัง การอ้างอิงจะใช้ 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
- กฎ
- ปัญหา 187249: NPE ใน
Intents.release()
- ปัญหา 187249: NPE ใน
- runner
- ปัญหา 196066: อาร์กิวเมนต์
-e log true
ในAndroidJUnitRunner
ไม่ได้ ข้ามการทดสอบจริง - รอโปรแกรมแก้ไขข้อบกพร่องใน
onCreate()
ของโปรแกรมเรียกใช้ - ย้ายคำอธิบายประกอบการทดสอบที่รองรับทั้งหมดออกจากแพลตฟอร์มไปยัง ATSL
- นำการทิ้งสแต็กเทรซเกี่ยวกับไม่มี JSBridge ออกแล้ว
- คงที่
AndroidAnnotatedBuilder
- ปัญหา 196066: อาร์กิวเมนต์
การเปลี่ยนแปลงอื่นๆ ที่โดดเด่น
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
และServiceTestRule
พ้นระยะเบต้าแล้ว- เพิ่มไฟล์การตั้งค่ารูปแบบโค้ดเพื่อการจัดรูปแบบโค้ดที่สม่ำเสมอ
Espresso 2.2.1, Runner/Rules 0.4 (15-09-2015)
ฟีเจอร์ใหม่
- กฎ
- เพิ่มตัวสร้าง
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
ไม่รั่วไหลอีกต่อไปparentListener
- 153303: ระบุแรงโน้มถ่วงในการตรวจสอบ "ลิ้นชักเปิดหรือปิด"
- 157910: เพิ่ม
DrawerLayout
การดำเนินการเปิดและปิด โรงงาน
- 157911: เพิ่มตัวจับคู่มุมมองสำหรับประเภทอินพุตในออบเจ็กต์
การแก้ไขข้อบกพร่อง
- espresso
ViewActions.closeSoftKeyboard()
ตอนนี้จะช่วยให้มั่นใจได้ว่าแป้นพิมพ์เสมือนจะหายไป อย่างสมบูรณ์- แก้ไขปัญหาการซิงค์กับเมธอด
Espresso.pressBack()
ของ Espresso ใน API ระดับ 21 ขึ้นไป - แก้ไขการซิงค์ภาพเคลื่อนไหวการปิดแป้นพิมพ์ใน API ระดับ 23
- กฎ
- แก้ไข
ServiceTestRule
ใน API ระดับ 23 แล้วstartService()
ต้องเรียกใช้ด้วยIntent
ที่ชัดเจนเสมอ
- แก้ไข
- runner
- แก้ไขการรองรับ Gradle
JaCoCo
ที่ใช้งานไม่ได้ - แก้ไขการรองรับการแบ่งพาร์ติชันการทดสอบที่ใช้งานไม่ได้
- แก้ไขสถานะที่ไม่สอดคล้องกันในโปรแกรมเรียกใช้การทดสอบหลังจากที่การทดสอบสไตล์
JUnit3
หมดเวลา
- แก้ไขการรองรับ Gradle
การเปลี่ยนแปลงอื่นๆ ที่โดดเด่น
- แก้ไข Javadoc และปรับปรุงข้อความแสดงข้อผิดพลาด
- ไม่สนใจเมธอด
suite()
และไม่สนใจข้อผิดพลาดในการเริ่มต้นเมื่อใช้ตัวกรองเมธอด
Espresso 2.2 / ATSL 0.3 (09-06-2015)
ฟีเจอร์ใหม่
- espresso-web 2.2
- การสนับสนุน
WebView
ใหม่
- การสนับสนุน
- espresso-core 2.2
- ย้ายข้อมูลไปใช้ Dagger v2 แล้ว
- ย้ายข้อมูลไปใช้ Hamcrest v1.3 แล้ว
- espresso-contrib 2.2
- การตรวจสอบการช่วยเหลือพิเศษ
DrawerActions
การรองรับแรงโน้มถ่วง
- กฎ 0.3
DisableOnAndroidDebug
กฎ
- runner 0.3
- อัปเกรดจาก JUnit v4.10 เป็น JUnit v4.12
- ย้ายข้อมูลไปใช้ Hamcrest v1.3
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
DrawerActions
การรั่วไหลParentListener
- ตอนนี้ระบบจะถือว่าการไม่เป็นไปตามข้อสันนิษฐานเป็นการทดสอบที่ควรละเว้นแทนที่จะเป็นการทดสอบที่ไม่ผ่าน
- แก้ไขปัญหา
MonitoringInstrumentation
ที่ทำให้ข้อมูลกิจกรรมรั่วไหลผ่านExecutorService
- แก้ไขปัญหาที่กิจกรรมที่ไม่มีกิจกรรมหลักค้างอยู่ในสถานะหยุดแล้ว
- อัปเดต
Until.scrollFinished()
เพื่อแสดงค่าเป็นจริงหากไม่มีการสร้างเหตุการณ์เลื่อน ป้องกัน NPE ที่อาจเกิดขึ้นในUiObject2#setText()
Espresso 2.1, Test Runner/Rules 0.2 และ UIAutomator 2.1.0 (21-04-2015)
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- แยกอาร์ติแฟกต์โปรแกรมเรียกใช้การทดสอบออกเป็น 2 รายการ และเปลี่ยนชื่อจาก
com.android.support.test:testing-support-lib:0.1
เป็นcom.android.support.test:runner:0.2
และcom.android.support.test:rules:0.2
ฟีเจอร์ใหม่
- espresso-intents: API ที่คล้ายกับ Mockito ซึ่งช่วยให้ทดสอบการโต้ตอบแบบเฮอร์เมติกได้
โดยอนุญาตให้ผู้เขียนการทดสอบยืนยันและจำลอง Intent ขาออก
IntentsTestRule
: ขยายActivityTestRule
, เริ่มต้นและเผยแพร่ Espresso-Intents ในการทดสอบ UI เชิงฟังก์ชัน
- espresso-core
ViewActions
: เพิ่มความสามารถในการเรียกใช้การยืนยันส่วนกลางก่อนที่จะเรียกใช้การดำเนินการ ซึ่งจะเป็นประโยชน์สำหรับเฟรมเวิร์กอื่นๆ ที่สร้างขึ้นบน Espresso เพื่อตรวจสอบสถานะของลำดับชั้นของมุมมองขณะที่ชุดทดสอบ Espresso ที่มีอยู่ กำลังดำเนินการViewMatchers.withContentDescription()
resId
โอเวอร์โหลด
- กฎ
ActivityTestRule
: กฎนี้ใช้สำหรับการทดสอบการทำงานของกิจกรรมเดียวUiThreadRule
และคำอธิบายประกอบUiThreadTest
: กฎนี้อนุญาตให้เมธอดทดสอบ ที่อธิบายประกอบด้วยUiThreadTest
ทำงานในเทรดหลักของแอปพลิเคชัน (หรือเทรด UI)ServiceTestRule
: กฎนี้ให้การทดสอบการทำงานของบริการ
- runner
ApplicationLifecycleCallback
: การเรียกกลับสำหรับการตรวจสอบเหตุการณ์วงจร แอปพลิเคชัน- ตอนนี้คุณระบุอาร์กิวเมนต์ของ Runner ทั้งหมดในไฟล์ AndroidManifest ได้แล้วโดยใช้แท็ก
<meta-data>
- UIAutomator
- ตอนนี้
UiDevice.dumpWindowHierarchy()
สามารถรับFile
หรือOutputStream
ได้แล้ว
- ตอนนี้
การแก้ไขข้อบกพร่อง
- espresso
- ตอนนี้ตัวจับคู่เคอร์เซอร์จะแสดงผล
false
หากไม่พบคอลัมน์ เพื่อให้ Hamcrest ดำเนินการไปยังเคอร์เซอร์ถัดไปได้ NullPointerException
ที่มีPreferenceMatchers
withTitle
จะไม่เกิดขึ้นอีกต่อไป- การยกเลิกการลงทะเบียนทรัพยากรที่ไม่มีการใช้งานจะไม่ทำให้ Espresso คิดว่าเรามี ทรัพยากรที่ไม่มีการใช้งานที่กำลังทำงานอยู่
- 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
- Matcher
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: Matcher สำหรับการทดสอบเลย์เอาต์ที่เกี่ยวข้องกับ i18nCursorMatchers
: ชุดตัวเทียบสำหรับออบเจ็กต์Cursor
- การยืนยัน
PositionAssertions
รวมถึงisLeftOf()
และisAbove()
: คอลเล็กชัน ของViewAssertions
สำหรับตรวจสอบตำแหน่งที่สัมพันธ์ขององค์ประกอบบน หน้าจอLayoutAssertions
: การยืนยันสำหรับการทดสอบเลย์เอาต์ที่เกี่ยวข้องกับ i18n
- แอปทดสอบ: กิจกรรม/การทดสอบตัวอย่างใหม่ๆ มากมาย
- อื่นๆ
Espresso.unregisterIdlingResources()
และEspresso.getIdlingResources()
: เพิ่มความยืดหยุ่นในการ ทำงานกับIdlingResources
ViewInteraction.withFailureHandler()
: อนุญาตให้ลบล้างตัวแฮนเดิลข้อผิดพลาด จากonView()
onData()
รองรับAdapterViews
โดยCursorAdapters
การแก้ไขข้อบกพร่อง
ViewMatchers.isDisplayed()
ตรงกับยอดดูที่ใช้ทั้งหน้าจอ แต่ จะไม่แสดงน้อยกว่า 90% อีกต่อไป- การปัดเพื่อโทรหา
DrawerActions.openDrawer()
จะไม่ทำให้เกิดIdlingResourceTimeoutException
อีกต่อไป
การเปลี่ยนแปลงอื่นๆ ที่โดดเด่น
- เปลี่ยนจากการสร้างด้วย Maven เป็น Gradle
- ย้ายทรัพยากร Dependency ของ Espresso (Guava, Dagger, Hamcrest) ออกไปเพื่อหลีกเลี่ยง การชนกันของ DEX
- เปลี่ยนให้แสดงผลสำเร็จหรือล้มเหลวเมื่อลงทะเบียนและยกเลิกการลงทะเบียนทรัพยากรที่ไม่ได้ใช้งาน
- การรองรับ Lollipop: วาง
message.recycle()
ไว้หลังอินเทอร์เฟซเพื่อพิจารณาการเปลี่ยนแปลงที่เกี่ยวข้องกับเวอร์ชัน - เปลี่ยนระดับ SDK เป้าหมายเป็น 21 ซึ่งส่วนใหญ่จะส่งผลต่อแอปทดสอบ
เวอร์ชัน 1.1 (เผยแพร่เมื่อ: 08-01-2014)
เอสเพรสโซ
swipeLeft
และswipeRight
ViewActions
ใหม่- การรองรับฟีเจอร์หลายหน้าต่าง: ฟีเจอร์ขั้นสูงที่ช่วยให้เลือกหน้าต่างเป้าหมายที่ Espresso ควรเรียกใช้การดำเนินการได้
- การปรับปรุง
TypeTextAction
: อนุญาตให้พิมพ์ข้อความในมุมมองที่โฟกัสไว้ล่วงหน้า ซึ่งจะช่วยให้ต่อท้ายข้อความได้ง่ายขึ้น - การแก้ไขข้อบกพร่องหลายรายการ
ไลบรารี Espresso Contrib
- ไลบรารีใหม่นี้มีฟีเจอร์ที่เสริม Espresso แต่ไม่ได้เป็นส่วนหนึ่ง ของไลบรารีหลัก
- ใหม่
DrawerActions
สำหรับการดำเนินการในDrawerLayout
: มีการอ้างอิงใน Android Support Library เราจึงเก็บไว้ภายนอกไลบรารี Espresso หลัก
การทดสอบตัวอย่าง
- เราได้ย้ายการทดสอบเหล่านี้ไปไว้ในแพ็กเกจเดียวกันกับแอปทดสอบแล้ว
- เราได้แก้ไข POM ของ Maven เพื่อนำการขึ้นต่อกันของ Guava ที่ซ้ำกันออกแล้ว ดังนั้น
mvn install
ควรใช้งานได้แล้ว