測試版本資訊封存記錄

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 Truth 1.1.0-beta01

  • 核心
    • 提供全新的 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
  • Runner
    • 讓 -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 無法正常運作
    • 新增對插入動作事件序列的支援
  • Intents
    • 新增 Beta 版 API 以擷取意圖清單,專為與新的 Truth 斷言搭配使用
  • 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」引數時,才啟用 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 變更,因為 Eespresso 意圖不能在沒有 espresso-core 的情況下使用。
    • 問題65486414:Espresso 缺少 Guava 依附元件
    • 問題65576174:Espresso IdlingResourceRegistry.sync 導致第二次測試失敗
    • 問題 65568629:Espresso.onIdle 未使用 IdlingRegistry
    • 問題69333598:espresso3.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 核心構件不同。這種方式比較簡潔,且應該能大幅減少 espresso-core 的整體大小和方法數量。
  • Runner
    • 如果對繫結器交易來說太大,請截斷堆疊追蹤。由於 AJUR 必須透過繫結器 IPC 將失敗回報給 AM,因此我們必須確保不超過 Binder 交易限制 (每個程序 1 MB)。
    • 問題 65828576:使用 @Ignore 在類別中執行測試時,TestRequestBuilder 會停止運作
    • 問題 37057596:我們無法處理 @BeforeClass 中的失敗
  • 規則
    • 生命週期變更後,請務必釋出受測試活動的參照。在測試期間,現在可以使用從 #getActivity() 取得的參照直接操控活動。如果活動完成並重新啟動,#getActivity() 傳回的參照將一律指向 Activity 的當前執行個體。
    • 問題 64389280GrantPermissionRule 未提供 WRITE_EXTERNAL_STORAGE
    • 問題 37065965ActivityTestRule 在螢幕方向變更後外洩活動
    • 問題 75254050ActivityTestRule不會在設定變更期間更新活動執行個體
    • 問題 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 標記。請注意,明確指令中的結構定義是測試結構定義的應用程式。
    • 已修正 - 執行空白測試時 (aka.,目標中沒有 @Test),測試結果與舊版模式不同。
    • 問題72758547:測試 Orchestrator 導致 Jacoco 涵蓋率資料不完整,只有一個測試執行資料
    • 問題67916042:Android Test Orchestrator:由於 OutOfMemory,在程序當機時停止執行
    • 問題 77752735: Orchestrator 因交易 TooLargeException 而異常終止
    • 問題77549481:測試 Orchestrator 應在每次測試後執行「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)

  • 濃縮咖啡

  • 執行器

    • 分割監控 Maven 構件 com.android.support.test:monitor:<version>,適用於需要 MonitoringInstrumentation 但未執行測試和 JUnit 功能的使用者。

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

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

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

  • AndroidTestOrchestrator

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

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

  • 濃縮咖啡

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

    • 簡化 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 是獨立的檢測程序,系統會為每個測試產生一個檢測執行器程序,並收集結果。
      • 應用程式當機問題會移除執行器檢測作業,而非自動化調度管理工具,讓測試套件繼續
      • 需要安裝 Orchestrator APK – 'com.android.support.test:orchestrator:1.0.0'
      • 1.0 版僅有指令列介面;已規劃與 Android Studio 和 Firebase Test Labs 的整合

修正錯誤

  • 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,執行器/規則 0.5 (2016-02-22,靜音版本)

新功能

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

修正錯誤

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

其他重要異動

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

Espresso 2.2.1,執行器/規則 0.4 (2015-09-15)

新功能

  • 規則
    • 新增 IntentsTestRule 建構函式,與 ActivityTestRule 完全相容
  • Runner
    • 針對 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:在「導覽匣是否開啟」檢查中指定的重力
    • 157910:新增 DrawerLayout 開啟和關閉動作工廠

修正錯誤

  • espresso
    • ViewActions.closeSoftKeyboard() 現在會確保螢幕鍵盤已完全消失
    • 已修正 Espresso 的 Espresso.pressBack() 方法在 API 級別 21 及以上級別的同步處理問題
    • 已修正 API 級別 23 鍵盤關閉動畫的同步處理作業
  • 規則
    • 已修正 API 級別 23 中的 ServiceTestRule,一律使用明確的 Intent 呼叫 startService()
  • Runner
    • 已修正損毀的 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 項規則
  • Runner 0.3
    • 從 JUnit v4.10 升級至 JUnit v4.12
    • 已遷移至使用 Hamcrest v1.3

修正錯誤

  • 已修正 DrawerActions 外洩 ParentListener
  • 假設失敗現在被視為忽略測試,而不是失敗測試
  • 修正透過 ExecutorService 造成 MonitoringInstrumentation 外洩活動例項的問題
  • 修正孤立活動停在停止階段的問題
  • 如果未產生任何捲動事件,請更新 Until.scrollFinished() 以傳回 true。防範 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、初始化及發布功能性 UI 測試中的 Espresso-Intent
  • espresso-core
    • ViewActions:新增了在執行動作之前可執行全域斷言的功能。對於以 Espresso 為基礎建構的其他架構,這很實用,有助於在執行現有 Espresso 測試套件時驗證檢視區塊階層的狀態
    • ViewMatchers.withContentDescription() resId 超載
  • 規則
    • ActivityTestRule:這項規則針對單一活動提供功能測試
    • UiThreadRuleUiThreadTest 註解:這項規則可讓以 UiThreadTest 註解的測試方法在應用程式的主要執行緒 (或 UI 執行緒) 上執行
    • ServiceTestRule:這項規則提供服務的功能測試
  • Runner
    • ApplicationLifecycleCallback:監控應用程式生命週期事件的回呼
    • 您現在也可以使用 <meta-data> 標記在 Android 資訊清單檔案中指定所有執行器引數
  • UIAutomator
    • UiDevice.dumpWindowHierarchy() 現在可接受 FileOutputStream

修正錯誤

  • espresso
    • 如果找不到資料欄,遊標比對器現在會傳回 false,讓 Hamcrest 繼續處理下一個遊標
    • 包含 PreferenceMatchers withTitleNullPointerException 已不存在
    • 取消註冊閒置資源後,Espresso 就不會再認為我們擁有忙碌的閒置資源
    • 更新了 Espresso Contrib 使用的 Support Annotations 版本
  • Runner
    • AndroidJUnit4 現在會略過假設失敗的測試
  • UIAutomator
    • 執行看守工具來避免 StaleObjectException

其他重要異動

  • 無法以非拉丁字母串鍵入文字時新增更好的錯誤訊息

UIAutomator 2.0 (2015 年 3 月 12 日)

UI Automator 現在以 Android Instrumentation 為基礎,可使用 ./gradlew connectedCheck 指令建構及執行測試。

Espresso 2.0 版,測試執行器 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:處理與 DateTime Picks 的互動
  • 比對器
    • 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-01-08)

Espresso

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

Espresso Contrib 程式庫

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

測試範例

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