複雜的測試配置

某些測試模塊可能需要無法在測試用例本身中執行的自定義設置和拆除步驟。典型的例子可能包括:

  • 安裝其他 apk(除了測試 apk)
  • 將一些文件推送到設備
  • 運行命令(例如 adb shell pm ...)

過去,組件團隊通常求助於編寫主機端測試來執行此類任務,這需要了解 Trade Federation 工具,並且通常會增加測試模塊的複雜性。

借用CTS,我們引入了test module config的概念來支持這樣的任務,上面的常見任務列表只需幾行config就可以實現。為了獲得最大的靈活性,你甚至可以實現自己的目標製作者,所界定ITargetPreparerITargetCleaner ,並配置自己的測試模塊的配置使用。

測試模塊的測試模塊配置是添加到頂級模塊源文件夾中的必需 XML 文件,名為“AndroidTest.xml”。 XML 遵循 Trade Federation 測試自動化工具使用的配置文件的格式。目前,通過測試模塊配置處理的主要標籤是“target_preparer”和“test”標籤。

目標準備者

A“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>

例如,我們可以添加以下選項標籤(在上面的“插入”註釋處):

    <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>

這些選項將測試工具配置為:

  1. 在調用測試模塊之前,在設備上執行 shell 命令“settings put secure accessibility_enabled 1”
  2. 測試模塊完成後,執行shell命令“settings put secure accessibility_enabled 0”

在此特定示例中,分別在測試模塊執行之前/之後啟用/禁用可訪問性。通過一個簡單的示例演示,有必要介紹有關如何使用“選項”標籤的更多詳細信息。如上所示,標籤可以有兩個屬性:名稱、值。 name 屬性指示選項的名稱,並進一步分解為由冒號分隔的兩部分:準備者的簡稱,以及準備者提供的實際選項名稱。

value 字段的確切用途取決於準備者如何定義選項:它可以是字符串、數字、布爾值,甚至是文件路徑等。在上面的示例中,名稱“run-command:run-command”表示我們正在為短名稱“run-command”的目標準備器定義的選項“run-command”設置值;並且名稱“run-command:teardown-command”意味著我們正在為選項“teardown-command”設置值,該選項也由具有短名稱“run-command”的同一目標準備器定義。以下是三種常見目標準備器的摘要:

  • 類名: PushFilePreparer

    • 簡稱:按文件
    • 功能:推下測試用例夾任意文件插入設備目的地
    • 注意事項
      • 此準備程序可以從文件夾推送到文件夾,或從文件推送到文件;也就是說,您不能在設備上的文件夾下推送文件:您還必須在該文件夾下指定目標文件名
    • 選項
      • 推:一個推規格,格式為' /path/to/srcfile.txt->/path/to/destfile.txt '或' /path/to/srcfile.txt->/path/to/destdir/ '。可能重複 此路徑可能相對於測試模塊目錄或 out 目錄本身。
      • **後推:** A命令在設備上運行(用` adb shell <your command> `)所有推已經嘗試之後。典型用例是使用 chmod 獲取權限
  • 類名: InstallApkSetup

    • 簡稱:安裝APK時
    • 功能:推動任意APK文件下到上的設備目的地
    • 選項:
      • 測試文件名稱:要被上到設備安裝的apk的名稱。
      • 安裝精氨酸:附加參數傳遞給安裝時命令,其中包括領先的破折號,例如“-d”可以重複。
  • 類名: RunCommandTargetPreparer

    • 簡稱:運行命令
    • 功能:執行之前或測試模塊執行之後任意shell命令
    • 選項:
      • 運行命令:ADB shell命令來運行。可能會重複
      • 拆卸指令: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
    • 功能:測試運行給定的設備上的本機測試包。
    • 選項:
      • 本機測試設備路徑:其中,天然測試位於設備上的路徑。
  • 類名: InstrumentationTest

    • 短名稱:儀器儀表
    • 功能:測試該給定設備上運行的儀器測試包
    • 選項:
      • 包:Android的測試應用程序運行的清單包名稱。
      • 類:測試類的名稱來運行。
      • 方法:測試方法的名稱來運行。
  • 類名: AndroidJUnitTest

    • 功能:測試運行使用android.support.test.runner.AndroidJUnitRunner該給定設備上的儀表測試包是執行儀表測試的主要途徑。