測試版本資訊封存記錄

AndroidX Test Espresso 3.1.1、Runner 1.1.1、Rule 1.1.1、Monitor 1.1.1 AndroidTestOrchestrator 1.1.1、Core 1.1.0、Truth 1.1.0、JUnit 1.1.0 (2018-12-13)

這是穩定版本的 AndroidX Test 1.1.0

  • 核心
    • 允許 ActivityScenario 支援啟動其他活動的活動

AndroidX Test Espresso 3.1.1-beta01、Runner 1.1.1-beta01、Rule 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-ktx Kotlin 擴充功能構件!其中包括適用於 Kotlin 的 ActivityScenario.launchActivity API
    • 全新的 ActivityScenario API,用於啟動具有自訂意圖的活動
    • 全新的 ActivityScenario API,用於接收 Activity 結果
    • 允許關閉 ActivityScenario
  • Espresso
    • 修改 withResourceNameMatcher 和 HumanReadables,使其與 API 28 相容
    • 更新 ReplaceTextAction 的說明,以加入 stringToBeSet
    • 支援在 Robolectric 的已暫停循環器模式下使用 Espresso。
  • JUnit
    • 全新的 ActivityScenarioRule API,用於在測試的設定和卸除作業中自動啟動及關閉 Activity
    • 提供全新的 junit-ktx kotlin 擴充功能構件!其中包括適用於 Kotlin 的 ActivityContextRule API
  • 執行器
    • 讓 -e 套件和 -e testFile 在接收套件時呈現一致的行為
  • Truth
    • 新增 bool、parcelable 和 parcelableAsType BundleSubject API

AndroidX Test Espresso 3.1.0、Runner 1.1.0、Rule 1.1.0、Monitor 1.1.0 AndroidTestOrchestrator 1.1.0、Core 1.0.0 Truth 1.0.0、JUnit 1.0.0 (2018-10-24)

  • 全部
    • 將 minSdkVersion 設為 14,並將 targetSdkVersion 設為 28
  • Espresso
    • 修正 withContentDescription,以便與非字串類型搭配運作
    • 新增在 Robolectric 上使用 Espresso 的支援機制
    • 問題 72798625:啟用 textAllCaps 時,Espresso ViewMatchers.withText 無法正常運作
    • 新增對插入動作事件序列的支援
  • 意圖
    • 新增 Beta 版 API 以擷取意圖清單,專為與新的 Truth 斷言搭配使用
  • 執行器
    • 新增對免安裝應用程式的支援
    • 淘汰 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」引數時,才啟用 Orchestrator 涵蓋率處理機制
    • 只有在設定 -debug 但非用於列出帳戶遭盜用 (ATO) 測試案例的情況下,才需要等待偵錯工具。新增用於對 Orchestrator 本身進行偵錯的全新 orchestratorDebug 標記
  • 核心
    • 提供全新的構件!其中包括全新的 API,可同時支援本機與裝置端針對下列項目的測試作業:
      • 擷取背景資訊:ApplicationProvider
      • 控管活動生命週期:ActivityScenario (Beta 版)
      • 適用於 MotionEvent 和 PackageInfo 的建構工具
      • Parceables 公用程式類別
  • Truth
    • 提供全新的構件!其中包括 Notification、Intent、Bundle、Parcelable 和 MotionEvent 的 Truth 自訂主體
  • JUnit
    • 提供全新的構件!其中包括支援本機與裝置端測試的 JUnit Runner 類別 androidx.test.ext.junit.runners.AndroidJUnit4。

Espresso 3.0.2-beta1、Runner 1.0.2-beta1、Rule 1.0.2-beta1、Monitor 1.0.2-beta1、AndroidTestOrchestrator 1.0.2-beta1 (2018-04-16)

  • Espresso
    • 破壞性 API 變更:
      • 在問題64062890中引起了我們的注意,這是在我們公開的 API 中使用了 Guava Optional。這對我們來說是一個可怕的疏忽。因此,這個版本有重大的公開 API 變更資訊來解決這個問題。我們推出了在 Guava Optional 類別周圍加入醜陋的包裝函式,名為 EspressoOptional,其位在「android.support.test.espresso.util」命名空間下。使用洩漏的 Guava Optional API 的開發人員,需要在更新到此新版本期間,變更其匯入和參照項目,以使用 EspressoOptional。不便之處,敬請見諒。
    • onView() 和 onData() API 現已標示為 @CheckReturnValue,可避免發生錯誤
    • 已修正 espresso-core POM 檔案,以不引入「規則」依附元件,而是讓 espresso-intents POM 來提取。這對開發人員來說,這應該是一個 NoOp 變更,因為沒有 espresso-core 就無法使用 espresso-intents。
    • 問題 65486414:Espresso 缺少 Guava 依附元件
    • 問題 65576174:Espresso IdlingResourceRegistry.sync 會造成第二次測試失敗
    • 問題 65568629:Espresso.onIdle 未使用 IdlingRegistry
    • 問題 69333598:espresso 3.0.1 與 Android 程式庫模組中的 play-services-auth:11.6.0 不相容。
    • 問題 64062890:由 AdapterViewProtocol 介面顯示的內部選用類型
    • 問題 64091847:Espresso 3.0.0「不應」取決於測試執行者
    • 問題 73722050:espresso-contrib 3.0.2-alpha1 套件 android.arch.{lifecycle/core} 類別
  • Espresso-remote
    • 這是全新成果。我們將 Espresso 的所有多工處理函式解耦到 espresso-core 構件之外。這是比較簡潔的做法,而且應該會顯著減少 espresso-core 的整體大小和方法數量。
  • 執行器
    • 如果對於活頁夾交易來說太大,則截斷堆疊追蹤記錄。由於 AJUR 需要透過活頁夾 IPC 將故障報告回 AM,因此我們需要確保不超過 Binder 交易限制 (每個處理程序 1 MB)。
    • 問題 65828576:使用 @Ignore 在類別中執行測試時,TestRequestBuilder 會當機
    • 問題 37057596:我們無法處理 @BeforeClass 中的失敗作業
  • 規則
    • 生命週期變更後,請務必釋出有關被測試活動的參照。在測試期間,現在可以使用從 #getActivity()獲得的參照直接操作活動,如果活動完成並重新啟動,#getActivity()返回的參照現在總是指向活動的目前執行個體。
    • 問題 64389280GrantPermissionRule 不提供 WRITE_EXTERNAL_STORAGE
    • 問題 37065965ActivityTestRule 會在螢幕方向改變後外洩活動
    • 問題 75254050ActivityTestRule 不會在設定變更時更新 Activity 執行個體
    • 問題 64464625:無法在活動的方法 finish() 中處理 UI 工作
  • AndroidTestOrchestrator
    • 傳送 -e coverage true -e coverageFilePath /sdcard/foo/ 旗標即可在指定位置產生涵蓋範圍檔案 (應用程式必須具備寫入特定位置的權限)。覆蓋檔案命名約定現在看起來像這樣:com.foo.Class#method1.ec。請注意,這項功能只能在隔離模式中執行。而且無法與 AndroidJUnitRunner 的 coverageFile 旗標搭配使用。因為產生的覆蓋檔案會覆寫彼此。
    • 如果您希望自動化調度管理工具在測試叫用之間執行 pm clear context.getPackageName()pm clear targetContext.getPackageName() 指令,請傳遞 -e clearPackageData 旗標。請注意,明確指令中的結構定義是指測試結構定義下的應用結構定義程式。
    • 已修正 - 執行空白測試時,即目標中沒有 @Test,測試結果與舊模式不同。
    • 問題 72758547:測試自動化調度管理工具導致 Jacoco 涵蓋率資料不完整,只有一個測試執行資料
    • 問題 67916042:Android Test Orchestrator:由於 OutOfMemory,在程序當機時停止執行
    • 問題 77752735:自動化調度管理工具因 TransactionTooLargeException 而導致當機
    • 問題 77549481:測試自動化調度管理工具應在每次測試後執行「pm clear」

Espresso 3.0.2-alpha1、Runner 1.0.2-alpha1、Rule 1.0.2-alpha1、AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)

  • Espresso

    • Intents 現在有可呼叫的回應,在擷取一個觸發的意圖之後允許測試以執行,但在傳回一個Instrumentation.ActivityResult物件之前。
  • Runner

    • 分割監控 Maven 成果com.android.support.test:monitor:<version>,對於需要的使用者MonitoringInstrumentation沒有測試執行和 JUnit 功能。

      如果您使用 com.android.support.test:runner:<version>,則一切都會正常運作,因為 Gradle 會自動提取 monitor 模組作為 runner 模組的依附元件。

    • 已新增旗標 newRunListenerOrderModetrue時,使用者定義的事件監聽器會在預設事件監聽器之前執行。(我們預期這個行為最終將成為預設選項。)

    • 問題 65828576:在以 @Ignore 加註的類別中執行測試時,TestRequestBuilder 會當機 (獨立執行,但未執行測試或 JUnit 功能)。

  • AndroidTestOrchestrator

    • 現在可按照與非自動化調度管理工具AndroidJUnitRunner相同的方式處理空白測試。
    • Orchestrator 現在可以處理來自 AndroidJUnitRunner 的大型標準輸出。

Espresso 3.0.1、Runner 1.0.1、Rule 1.0.1、AndroidTestOrchestrator 1.0.1 (2017-08-28)

  • Espresso

    • 新增 IdlingPolicy 選項,在步驟偵錯工具附加至 VM 時抑制 onTimeout()
    • 問題 640246566424758664525881:除非使用者透過包含 -e 類別執行者引數來載入特定的類別,否則不要回報不成功類別載入失敗。
    • 問題 64877246:在來源 JAR 檔案中新增缺少的類別。
  • Runner

    • 簡化ShardingFilter邏輯。
    • 問題 65025743@RequiresDevice 篩選器現在支援 FTL 模擬器。
  • AndroidTestOrchestrator

    • 請勿重複報告失敗。如果測試程序在失敗後當機,測試中只會回報一次失敗。
    • 已修正適用 Orchestrator 的 Javadoc。
    • 現在,如果遠端處理程序當機,測試就會標示為錯過。
    • 現在控點已忽略的測試案例。
    • 現在從頁腳中排除忽略的測試用例以比對舊版結果。
    • 已修正執行階段權限問題。在 Android 7.0 (API 級別 24) 以上版本中,測試報告現在會寫入 SD 卡。

Espresso 3.0.0、Runner 1.0.0、Rule 1.0.0、AndroidTestOrchestrator 1.0.0 (2017-07-25,公告)

破壞性變更

  • 所有構件
    • 停止支援低於 15 的 API 級別;不過,基本 SDK 仍指向 API 級別 9,讓使用者有時間進行升級。
  • Espresso

已知問題

  • AndroidTestOrchestrator
    • 目前不支援 -e numShards-e shardIndex 執行器引數
    • 目前不支援參數化測試

新功能

  • 規則
  • AndroidTestOrchestrator
    • Android Test Orchestrator 可讓您透過全新方式收集和執行測試,並著重於修正和隔離問題。Orchestrator 是獨立的檢測程序,每次測試會產生一個檢測執行器程序,並收集結果。
      • 應用程式當機功能會將執行器檢測作業移除,而非自動化調度管理工具,因此讓測試套件繼續
      • 需要安裝自動化調度管理 APK - 'com.android.support.test:orchestrator:1.0.0'
      • 1.0 版只有指令列介面;已規劃與 Android Studio 和 Firebase Test Lab 整合

修正錯誤

  • Espresso
    • 改善根視圖同步處理功能,大幅減少片狀現象
    • 修正「IdlingResourceRegistry」的損毀
    • 更有效地同步處理 IdlingResource 物件
    • 問題 37132680:Espresso 不用等待對話方塊建立完成,才能進行下一個動作
    • 問題 37103280:Espresso 應運送 ProGuard 消費者規則,讓消費者不必加入規則
    • 問題 37094726:Espresso Intent 包含不必要的應用程式標籤
    • 問題 37093953:Espresso:沒有可用的空值/空白錯誤文字檢查
    • 問題 37071776espresso-core 嵌入了 Guava 的 .pom 檔案
    • 問題 37062612release() 中的 NPE
    • 問題 37063389:將 Guava 和 espresso-web 作為androidTest 依附元件無法編譯
    • 問題 37070533:在 Android 設計支援資料庫中新增對 NavigationView 的支援。

其他重要變更

  • 系統現在會透過 Google Maven 發布二進位檔
  • 縮減 espresso-coreespresso-web JAR 檔案的大小 - 內嵌依附元件現已套用 ProGuard
  • 全部 .aar 個檔案現在都會包含 ProGuard 規則
  • proguard_library.cfg 個檔案新增至已發布的成果
  • Tapper 介面已推出新版的 sendTap()

外部貢獻

Espresso 2.2.2、Runner/Rules 0.5 (2016-02-22,靜音版本)

新功能

  • espresso
    • 問題 194253:在 Android 支援設計資料庫中新增 NavigationView 支援
    • 針對已啟用的動畫和轉場效果新增檢查
    • 新的 ViewMatcher API:withResourceName()

修正錯誤

  • espresso
    • 問題 195331:espresso-core 嵌入 guava 的 POM 檔案
    • 將計數空閒資源移出 espresso-contrib
  • 規則
    • 問題 187249Intents.release() 中的 NPE
  • 執行器
    • 問題 196066:AndroidJUnitRunner 中的 -e log true 引數無法略過實際測試
    • 等待 onCreate() 執行器的偵錯工具
    • 將所有受支援的測試註解移出平台並進入 ATSL
    • 已移除沒有 JSBridge 的堆疊追蹤傾印
    • 已修正 AndroidAnnotatedBuilder

其他重要變更

  • ActivityTestRuleUiThreadTestRuleIntentsTestRuleServiceTestRule已通過測試階段
  • 新增程式碼樣式設定檔,以採用統一的程式碼格式

Espresso 2.2.1、Runner/Rules 0.4 (2015-09-15)

新功能

  • 規則
    • 新增新的 IntentsTestRule 建構函式,使其與 ActivityTestRule 完全相容
  • 執行器
    • 新增 API 級別 15 以下特別的 multidex 安裝案例
    • 已在類別和套件中加入排除篩選器:
      • 執除特定類別之外的所有測試: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 支援
    • 150744DrawerActions已不再外洩parentListener
    • 153303:在「導覽匣是否關閉」檢查中指定的 Gravity
    • 157910:新增DrawerLayout開啟和關閉動作係數

修正錯誤

  • espresso
    • ViewActions.closeSoftKeyboard() 現在會確保螢幕鍵盤已完全消失
    • 已修正 Espresso Espresso.pressBack() 方法在 API 級別 21 以上版本中的同步處理問題
    • 已修正 API 級別 23 鍵盤關閉動畫的同步處理作業
  • 規則
    • 修正 API 級別 23 的 ServiceTestRulestartService() 一律必須使用明確的 Intent 呼叫
  • 執行器
    • 已修正損毀的 Gradle JaCoCo 支援
    • 修正損壞的資料分割測試支援
    • 修正了 JUnit3 樣式測試逾時後測試運行器中的不一致問題

其他重要變更

  • 修正 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重力支援
  • 規則 0.3
    • DisableOnAndroidDebug 項規則
  • 執行器 0.3
    • 從 JUnit v4.10 升級至 JUnit v4.12
    • 遷移至使用 Hamcrest v1.3

修正錯誤

  • 修正 DrawerActions 外洩 ParentListener 的問題
  • 假設失敗現在被視為忽略測試而不是失敗測試
  • 已修正 MonitoringInstrumentation 透過 ExecutorService 外洩的活動例項
  • 修正孤立活動停在停止階段的問題
  • 如果未產生任何捲動事件,請更新 Until.scrollFinished() 以傳回是。防範 UiObject2#setText() 中的潛在 NPE。

Espresso 2.1、Test Runner/Rules 0.2 和 UIAutomator 2.1.0 (2015-04-21)

破壞性變更

  • 測試執行器構件分為兩個部分,名稱已從 com.android.support.test:testing-support-lib:0.1 變更為 com.android.support.test:runner:0.2com.android.support.test:rules:0.2

新功能

  • espresso-intents:這是 Mockito 型的 API,可讓測試作者驗證及擷取傳出意圖,以便啟用密封互動測試。
    • IntentsTestRule:擴充 ActivityTestRule、初始化及發布功能性使用者介面測試中的 Espresso-Intent
  • espresso-core
    • ViewActions:新增了在執行操作之前可執行全局斷言的能力。這對於構建在 Espresso 之上的其他架構很有用,以在執行現有 Espresso 測試套件時驗證檢視區塊階層結構的狀態。
    • ViewMatchers.withContentDescription() resId 超載
  • 規則
    • ActivityTestRule:這項規則針對單一活動提供功能測試
    • UiThreadRuleUiThreadTest 註解:這項規則可讓以 UiThreadTest 加註的測試方法,在應用程式的主要執行緒 (或 UI 執行緒) 上執行
    • ServiceTestRule:這項規則提供服務的功能測試
  • 執行器
    • ApplicationLifecycleCallback:監控應用程式生命週期事件的回呼
    • 您現在也可以使用 <meta-data> 標籤在 Android 資訊清單檔案中指定所有執行器引數
  • UIAutomator
    • UiDevice.dumpWindowHierarchy() 現在可以接受 FileOutputStream

修正錯誤

  • espresso
    • 如果找不到該資料欄,游標比對器現在會傳回 false,讓 Hamcrest 繼續處理下一個游標
    • 包含 PreferenceMatchers withTitleNullPointerException已不會出現
    • 取消註冊閒置資源後,不再使用 Espresso 認為我們擁有忙碌的閒置資源
    • 更新了 Espresso Contrib 使用的 Support Annotations 版本
  • 執行器
    • AndroidJUnit4 現在會略過假設失敗的測試
  • UIAutomator
    • 執行觀影盒以防止 StaleObjectException

其他重要變更

  • 當我們無法使用非拉丁字元串鍵入文字時新增更好的錯誤訊息

UIAutomator 2.0 (2015-03-12)

UI Automator 現已採用 Android 檢測工具,您可以使用 ./gradlew connectedCheck 指令建構及執行測試。

Espresso 2.0 版,Test Runner 0.1 (發布日期:2014-12-19)

破壞性變更

  • Espresso 已移至新的命名空間 (從 android.support.test.espressoandroid.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:處理與 DateTime 挑選器的互動
  • 比對器
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers:用於 i18n 相關版面配置測試的比對器
    • CursorMatchersCursor 物件的比對器系列
  • 斷言
    • PositionAssertions,包括 isLeftOf()isAbove()ViewAssertions 的 Colleciton,用於檢查螢幕中元素相對的位置
    • LayoutAssertions:i18n 相關版面配置測試的斷言
  • 測試應用程式:許多新的範例活動/測試
  • 其他
    • Espresso.unregisterIdlingResources()Espresso.getIdlingResources():提供更多與 IdlingResources 合作的彈性
    • ViewInteraction.withFailureHandler():允許覆寫來自 onView() 的失敗處理常式
    • onData()支援由CursorAdapters支援的AdapterViews

修正錯誤

  • ViewMatchers.isDisplayed() 會比對佔滿整個螢幕畫面的視圖,但顯示畫面不再低於 90%
  • DrawerActions.openDrawer() 執行滑動動作呼叫後,不再有結果在 IdlingResourceTimeoutException

其他重要變更

  • 已從使用 Maven 構建切換至 Gradle
  • 將 Espresso 依附元件 (Guava、Dagger、Hamcrest) 移出即可避免產生 DEX 衝突
  • 已變更,以便在註冊及取消註冊閒置資源時傳回成功或失敗
  • Lollipop 支援:將 message.recycle() 置於介面後方,以因應版本相關變更
  • 已將目標 SDK 等級切換為 21 - 主要會影響測試應用程式

1.1 版 (發布日期:2014 年 1 月 8 日)

Espresso

  • 新的 swipeLeftswipeRight ViewActions
  • 支援多視窗模式:這項進階功能可讓您選擇目標視窗執行 Espresso 執行作業時的目標位置
  • 改善 TypeTextAction:允許在預先對焦檢視模式中輸入文字,更輕鬆地附加文字
  • 修正多項錯誤

Espresso Contrib 程式庫

  • 這個新的程式庫包含補充 Espresso 的功能,但不屬於核心程式庫的一部分
  • DrawerLayout 上運作的新 DrawerActions:具有與 Android 支援資料庫的相依關係,因此我們會將其保留在核心 Espresso 程式庫之外

測試範例

  • 這些測試已重新定位到與測試應用程式相同的套件中
  • 已修正 Maven POM 以移除重複的 Guava 下降作業,因此 mvn install 應該能正常運作