部分測試模組可能需要自訂設定,並拆解無法執行的步驟 必須在測試案例內執行常見範例包括:
- 安裝其他 APK (除了測試 APK)
- 將一些檔案推送至裝置
- 執行指令 (例如 adb shell pm ...)
過去,元件團隊通常需要編寫主機端測試 執行這類工作,但需要瞭解貿易聯盟使用方式。 而且通常會增加測試模組的複雜度
我們從 CTS 借助了這個概念,該概念可支援支援的測試模組設定 就這樣,上述常見工作清單只要幾行 設定檔。為了盡可能提高彈性,您甚至可以實作自己的目標準備工具 (如 ITargetPreparer 或 ITargetCleaner 所定義),並將其設為在您自己的測試模組設定中使用。
測試模組的測試模組設定是將必要的 XML 檔案新增至頂端 層級模組的來源資料夾,名稱為「AndroidTest.xml」。XML 會採用 的設定檔。 目前透過測試模組設定處理的主要代碼為「target_preparer」 「test」標記內。
目標準備者
如同名稱所示,「target_preparer」標記會定義目標準備工具 (請參閱 ITargetPreparer),提供設定方法,該方法會在執行測試模組前呼叫;如果「target_preparer」標記中參照的類別也實作 ITargetCleaner,則在測試模組完成後,系統會叫用該類別的解構方法。
如要使用內建的通用模組設定,請在下列位置新增「AndroidTest.xml」檔案: 測試模組的頂層資料夾,並填入以下內容 內容:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
舉例來說,我們可以新增下列選項標記 (位於「insert」註解中) 以上):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
這些選項會將測試控管工具設為:
- 叫用測試模組之前,請執行「設定,安全設定」殼層指令 裝置中的 accessibility_enabled 1」
- 測試模組完成後,請執行 shell 指令「settings put secure accessibility_enabled 0」
在本例中,無障礙功能在 來測試模組執行作業。透過一個簡單的範例示範 。如上所示 此標記可能包含兩個屬性:名稱、值name 屬性必須提及 準備人員提供的其中一個選項
值欄位的確切用途取決於準備工具的定義 選項:可以是字串、數字、布林值,甚至是檔案路徑。 以下摘要說明三種常見的目標準備工具:
類別名稱:PushFilePreparer
- 簡稱:Push-file
- function:將測試案例資料夾內的任意檔案推送至 裝置上的目的地
- 附註:
- 可從資料夾或檔案推送至檔案並 是, 無法在裝置的資料夾中推送檔案: 您必須 請一併指定該資料夾下的目的地檔案名稱
- 選項:
- push-file:推送規格,將本機檔案指定至路徑 以及應該推送在哪裡可以重複。如有多個 檔案會推送至相同的遠端路徑 最新的值就會推送
- push: (已淘汰) 推送規格,格式為
「
/path/to/srcfile.txt->/path/to/destfile.txt
」或 「/path/to/srcfile.txt->/path/to/destdir/
」。可以重複。 這個路徑可能與測試模組目錄相關,或是與測試模組目錄相關 目錄本身 - post-push:嘗試所有推送作業後,要在裝置上執行的指令 (使用「
adb shell <your command>
」)。一般用途是使用 chmod 設定權限
類別名稱:InstallApkSetup
- short name:install-apk
- 函式:將任意 apk 檔案推送至目的地 裝置
- 選項:
- test-file-name:要安裝的 APK 名稱 裝置。
- install-arg:要傳遞至 pm install 的其他引數 指令 (包括開頭破折號),例如:「-d」。可重複出現
-
- 簡稱:run-command
- function:在測試前後執行任意殼層指令 模組執行
- 選項:
- run-command:adb shell 指令。可重複出現
- teardown-command: 要執行的 ADB 殼層指令。 可重複
測試類別
測試類別是用於執行測試的 Trade Federation 類別。
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
以下是三個常見的測試類別:
類別名稱:GTest
- 簡稱:gtest
- 函式:在指定裝置上執行原生測試套件的測試。
- options:
- native-test-device-path:原生測試裝置上的路徑。
類別名稱:InstrumentationTest
- 簡稱:檢測
- 函式:在指定裝置上執行檢測設備測試套件的測試
- 選項:
- package:要執行的 Android 測試應用程式的資訊清單套件名稱。
- class:要執行的測試類別名稱。
- method:要執行的測試方法名稱。
類別名稱:AndroidJUnitTest
- 函式:這項測試會在指定 裝置使用 android.support.test.runner.AndroidJUnitRunner 這是執行檢測設備測試的主要方式。