ที่เก็บถาวรบันทึกประจำรุ่นสำหรับการทดสอบ

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
  • ความจริง
    • อาร์ติแฟกต์ใหม่ รวมถึงหัวข้อความจริงที่กำหนดเองสำหรับ 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}
  • 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 ขึ้นไป

ปัญหาที่ทราบ

  • AndroidTestOrchestrator

ฟีเจอร์ใหม่

  • Espresso
    • Multiprocess Espresso ใหม่รองรับ API 26 สำหรับ espresso-core และ espresso-web แต่ไม่ espresso-contrib
    • API ใหม่ที่มีน้ำหนักเบา IdlingRegistry
    • API ใหม่ที่จะช่วยซิงค์กับ Executors
    • API ใหม่ที่จะช่วยซิงค์กับคำขอและการตอบกลับของเครือข่าย
      • อาร์ติแฟกต์ Maven ใหม่ com.android.support.test.espresso.idling:idling-net:3.0.0
      • มีUriIdlingResource class
    • ตัวระบุการจับคู่มุมมองใหม่ของ espresso-core
    • วิธีการดำเนินการดูใหม่
      • ปรับปรุงscrollTo() การดำเนินการดูให้ทำงานร่วมกับองค์ประกอบย่อยของ ListView
      • repeatedlyUntil() – ดำเนินการViewActionที่ระบุในมุมมองจนกว่า มุมมองจะตรงกับViewMatchersที่ต้องการ
    • วิธีการใหม่ของ Espresso
      • pressBackUnconditionally() – คล้ายกับ pressBack() แต่ จะไม่ทิ้งข้อยกเว้นเมื่อ Espresso นำทาง
      • noActivity() – ไม่ต้องรอให้กิจกรรมเกิดขึ้นก่อนจึงจะดำเนินการ ViewAction หรือ ViewAssertion ได้
      • onIdle() – วนซ้ำเทรดหลักจนกว่าแอปจะไม่มีการใช้งาน
      • onIdle(Callable<T>) – เหมือนกับ onIdle() แต่ใช้ Callable เพิ่มเติมเป็นพารามิเตอร์ ซึ่งจะเรียกใช้หลังจากที่แอปไม่ได้ใช้งาน
    • webScrollIntoView()espresso-web อะตอมใหม่ที่ให้คุณเลื่อนภายใน WebView
  • Runner
    • InterceptingActivityFactory และ SingleActivityFactory - มีฟีเจอร์สำหรับ ทดสอบกิจกรรมแยกจากโลกภายนอกโดยการลบล้าง เมธอดต่างๆ เช่น startService() และ sendBroadcast()
    • เพิ่มการรองรับการใช้ JUnitParams กับ AndroidJUnitRunner
    • เริ่มจัดการ @UiThreadTest ที่ระดับโปรแกรมเรียกใช้การทดสอบหลักและ เลิกใช้งาน @UiThreadTestRule – การดำเนินการนี้ช่วยให้ใช้ คำอธิบายประกอบ @UiThreadTest โดยตรงในเมธอดที่มีคำอธิบายประกอบ ด้วย @Before และ @After
    • ตอนนี้คำอธิบายประกอบ @SdkSupress รองรับ ค่า maxSdkVersion (ปัญหา 37067792)
    • -e classLoader – เพิ่มความสามารถในการส่งตัวโหลดคลาส โดยใช้อาร์กิวเมนต์ของโปรแกรมเรียกใช้
    • -e filter – เพิ่มการรองรับตัวกรอง JUnit ที่กำหนดเองเพื่อระบุโดยใช้อาร์กิวเมนต์ของ Runner
    • -e runnerBuilder - ช่วยให้นักพัฒนาแอปสามารถระบุการใช้งานของตนเองสำหรับ RunnerBuilder ที่สามารถกำหนดได้ว่าควรเรียกใช้กับคลาสที่เฉพาะเจาะจงหรือไม่และอย่างไร
  • กฎ
  • AndroidTestOrchestrator
    • Android Test Orchestrator มีวิธีใหม่ในการรวบรวมและเรียกใช้การทดสอบ โดยเน้นที่ ความถูกต้องและการแยก Orchestrator เป็นกระบวนการใช้เครื่องมืออิสระ ซึ่งสร้างกระบวนการเรียกใช้เครื่องมือ 1 รายการสำหรับการทดสอบแต่ละครั้งและ รวบรวมผลลัพธ์
      • แอปพลิเคชันขัดข้องจะทำให้การวัดผลของโปรแกรมเรียกใช้หยุดทำงาน แต่จะไม่ทำให้ Orchestrator หยุดทำงาน ซึ่งจะช่วยให้ชุดทดสอบทำงานต่อไปได้
      • ต้องติดตั้ง APK ของ Orchestrator – 'com.android.support.test:orchestrator:1.0.0'
      • เวอร์ชัน 1.0 มีเฉพาะอินเทอร์เฟซบรรทัดคำสั่งเท่านั้น โดยมีแผนที่จะผสานรวมกับ Android Studio และ Firebase Test Lab

การแก้ไขข้อบกพร่อง

  • 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 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()
  • runner
    • ปัญหา 196066: อาร์กิวเมนต์ -e log true ใน AndroidJUnitRunner ไม่ได้ ข้ามการทดสอบจริง
    • รอโปรแกรมแก้ไขข้อบกพร่องใน onCreate() ของโปรแกรมเรียกใช้
    • ย้ายคำอธิบายประกอบการทดสอบที่รองรับทั้งหมดออกจากแพลตฟอร์มไปยัง ATSL
    • นำการทิ้งสแต็กเทรซเกี่ยวกับไม่มี JSBridge ออกแล้ว
    • คงที่ AndroidAnnotatedBuilder

การเปลี่ยนแปลงอื่นๆ ที่โดดเด่น

  • 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การดำเนินการเปิดและปิด โรงงาน

การแก้ไขข้อบกพร่อง

  • espresso
    • ViewActions.closeSoftKeyboard() ตอนนี้จะช่วยให้มั่นใจได้ว่าแป้นพิมพ์เสมือนจะหายไป อย่างสมบูรณ์
    • แก้ไขปัญหาการซิงค์กับเมธอด Espresso.pressBack() ของ Espresso ใน API ระดับ 21 ขึ้นไป
    • แก้ไขการซิงค์ภาพเคลื่อนไหวการปิดแป้นพิมพ์ใน API ระดับ 23
  • กฎ
    • แก้ไข ServiceTestRule ใน API ระดับ 23 แล้ว startService() ต้องเรียกใช้ด้วย Intent ที่ชัดเจนเสมอ
  • runner
    • แก้ไขการรองรับ Gradle JaCoCo ที่ใช้งานไม่ได้
    • แก้ไขการรองรับการแบ่งพาร์ติชันการทดสอบที่ใช้งานไม่ได้
    • แก้ไขสถานะที่ไม่สอดคล้องกันในโปรแกรมเรียกใช้การทดสอบหลังจากที่การทดสอบสไตล์ JUnit3 หมดเวลา

การเปลี่ยนแปลงอื่นๆ ที่โดดเด่น

  • แก้ไข 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 สำหรับการทดสอบเลย์เอาต์ที่เกี่ยวข้องกับ i18n
    • CursorMatchers: ชุดตัวเทียบสำหรับออบเจ็กต์ 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 ควรใช้งานได้แล้ว