對於 Android 11 或更高版本,相容性測試套件 (CTS) 裝置互動式幫助程式模組可讓您自訂某些 CTS 測試與特定裝置上的使用者介面 (UI) 互動的方式。這意味著可以在仍通過 CTS 的同時完成操作,例如取代Android 相容性定義文件 (CDD)或 API 文件未涵蓋的 UI 元素。
想要在產品開發過程中自訂 Android UI 並需要通過 CTS 的 OEM 或許可以實現幫助程式模組。如果您使用預設的 Android 實現,則不需要任何額外的工作。
實施幫助模組
客製化 UI 的要求
檢查 CDD 或 Mainline 模組是否有任何 UI 需求。如果所需的 UI 被 CDD 或 Mainline 模組覆蓋,則無法自訂該 UI。
如果與所需 UI 互動的 CTS 測試不使用幫助程式框架,則無法自訂該 UI。在更改 UI 之前,與測試所有者合作轉換測試模組。
否則,您可以自訂 UI。
實施工作流程
- 根據您的特定產品的需求自訂 UI。
- 將現有的 AOSP 幫助程式模組指定為需要與 UI 互動的 CTS 測試模組的子類別。為自訂 UI 適當替換必要的互動。替換根據更改的類型而有所不同。
- OEM 子類別位於 OEM 套件中,例如
com.[oem].cts.helpers
。 - 每個 OEM 子類別都使用一個公共前綴來命名,該前綴將其與 AOSP 實作區分開來,AOSP 實作具有前綴
Default
。
- OEM 子類別位於 OEM 套件中,例如
- 遵循這些測試運行程序約定將幫助程式建置到 APK 中。
-
Android.bp
應宣告android_test_helper_app
,其名稱與所包含的套件相同。 - APK 的
AndroidManifest.xml
必須宣告一個名為interaction-helpers-prefix
元資料屬性,其值為在上一個要點中選擇的類別前綴的值。 - 該應用程式應依賴
cts-helpers-core
、cts-helpers-interfaces
和com.android.cts.helpers.aosp
。如果 OEM 助理完全實作了所有相關接口,則com.android.cts.helpers.aosp
是可選的。
-
- 設定裝置映像中的
ro.vendor.cts_interaction_helper_packages
屬性以包含 APK 的名稱。如果您需要跨多個 APK 分隔幫助器實現,則此屬性可以包含以冒號分隔的套件清單。 - 確保執行 Tradefed for CTS 時 APK 在
testcases
目錄中可用。如果需要,請透過檢查 logcat 訊息來確認已選擇預期的幫助程式實作類別。 - 可選,但強烈建議:將您的幫助器實作提交給 AOSP 或使其可用於第三方測試。
幫助程式實作範例
例如, CtsPrintTestCases
需要一個具有ICtsPrintHelper
中定義的介面的幫助程式。 AOSP 實作稱為com.android.cts.helpers.aosp.DefaultCtsPrintHelper
。
如果自訂列印 UI,則可以建立com.oem.cts.helpers.OemCtsPrintHelper
作為DefaultCtsPrintHelper
子類別。 Android.bp
中的android_test_helper_app
被命名為com.oem.cts.helpers
,它會產生com.oem.cts.helpers.apk
,並在AndroidManifest.xml
中將interaction-helpers-prefix
宣告為Oem
。
設備屬性ro.vendor.cts_interaction_helper_packages
設定為com.oem.cts.helpers
。
參考實現
參考實作包含cts/libs/helpers
下的介面和cts/helpers
下的預設 AOSP 幫助器。頂級介面記錄在cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
。
若要將 CTS 測試連接到其助手,測試擁有者可以使用cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
中記錄的@Rule
定義。
使用該框架的每個 CTS 模組及其預期的幫助程式行為都會記錄在cts/libs/helpers/core/src/com/android/cts/helpers
下定義的介面中。
運行 CTS 測試
無需助手的測試
除了一個屬性之外,裝置上執行時不存在無需幫助程式進行測試的選項,但可以選擇修改 CTS 測試與裝置互動的方式。如果您需要在沒有幫助程式實現的情況下執行 CTS,您有兩個選擇:
- 從設備中刪除
ro.vendor.cts_interaction_helper_packages
屬性。這可以防止在該構建上完全使用助手。 - 在執行 CTS 之前,從
testcases
目錄中刪除幫助程式 APK。這可以防止在 APK 恢復到testcases
之前任何運行都使用幫助程式。
您可以使用 Tradefed 參數和ro.vendor.cts_interaction_helper_packages
屬性控制項來變更預設設置,這是載入幫助程式 APK 的位置。
請參閱以下內容以了解每個可用設定的預期值或範圍。
-
ro.vendor.cts_interaction_helper_packages
是一個包含套件名稱的冒號分隔字串。它可以採用任何值,只要是 OEM 幫助程式實現的有效套件選擇即可。 -
cts-tradefed
接受device-interaction-helper:property-name
參數,該參數可暫時更改一次測試運行的預期屬性,例如--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
。屬性名稱的值可以是您在裝置上設定的任何屬性。此屬性的值遵循與上述ro.vendor.cts_interaction_helper_packages
屬性相同的限制。
使用自訂進行測試
預設情況下,參考實作在原生 Android 上透過 CTS。檢查合作夥伴實作是否透過 UI 自訂的 CTS。運行涵蓋您自訂的 UI 或功能的 CTS 模組。
某些 CTS 模組或幫助程式可能尚不支援某些自訂。
- 與您想要自訂的 UI 互動的 CTS 模組可能不使用幫助程式框架。 CTS 模組預計將根據需求和測試所有者優先級轉換為幫助程式框架。在流程的早期提出轉換請求,以確保轉換按計劃進行,類似於請求 CTS 變更以支援您計劃的功能。
- 現有助手提供的功能可能無法完全滿足您想要進行的自訂。輔助函數應該要抽象化 UI 依賴項。如果輔助函數間接具有 UI 依賴性,則可以與 CTS 中的錯誤類似地處理。