Google致力於提高黑人社區的種族平等。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

複雜的測試配置

某些測試模塊可能需要定制的設置和拆卸步驟,而這些步驟無法在測試用例本身內執行。典型示例包括:

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

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

從CTS借來的,我們引入了測試模塊config的概念來支持這些任務,上面的常見任務列表僅需幾行config就可以實現。為了獲得最大的靈活性,您甚至可以實現自己的目標準備器(由ITargetPreparerITargetCleaner定義),並將其配置為在您自己的測試模塊配置中使用。

測試模塊的測試模塊配置是添加到頂層模塊源文件夾中的必需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>
 

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

     <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. 在調用測試模塊之前,請在設備上執行外殼命令“ settings put secure accessibility_enabled 1”
  2. 測試模塊完成後,執行shell命令“ settings put secure accessibility_enabled 0”

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

值字段的確切用途取決於準備程序定義選項的方式:它可以是字符串,數字,布爾值甚至文件路徑等。在上面的示例中,名稱“ run-command:run-command”表示我們正在為目標準備者定義的選項“運行命令”設置值,簡稱為“運行命令”;名稱“ run-command:teardown-command”表示我們正在設置選項“ teardown-command”的值,該選項也由同一目標準備者使用短名稱“ run-command”定義。以下是三個常見目標準備者的摘要:

  • 類名稱: PushFilePreparer

    • 短名稱 :push-file
    • 功能 :將測試用例文件夾下的任意文件推送到設備上的目標位置
    • 注意事項
      • 該準備者可以在文件夾之間推送,也可以在文件之間推送;也就是說,您不能將文件推送到設備上的文件夾下:您還必須在該文件夾下指定目標文件名
    • 選項
      • push:推送規範,格式為“ /path/to/srcfile.txt->/path/to/destfile.txt ”或“ /path/to/srcfile.txt->/path/to/destdir/ ”。可能重複該路徑可能相對於測試模塊目錄或out目錄本身。
      • ** post-push:**嘗試所有推送後在設備上運行的命令(帶有` adb shell <your command> `)。典型的用例是使用chmod獲得權限
  • 類名稱: InstallApkSetup

    • 短名稱: install-apk
    • 功能:將任意apk文件下推到設備上的目標位置
    • 選項:
      • test-file-name:要安裝到設備上的apk的名稱。
      • install-arg:傳遞給pm install命令的其他參數,包括前劃線,例如“ -d”,可以重複
  • 類名稱: RunCommandTargetPreparer

    • 短名稱: run-command
    • 功能:在測試模塊執行之前或之後執行任意shell命令
    • 選項:
      • run-command:運行 adb shell命令。可以重複
      • teardown-command:在拆解階段運行的adb shell命令。可以重複

測試班

測試類是用於執行測試的行業聯合會類。

 <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
    • 功能:在給定設備上運行本機測試包的測試。
    • 選項:
      • native-test-device-path:本機測試所在的設備上的路徑。
  • 類名稱: InstrumentationTest

    • 短名稱: Instrumentation
    • 功能:在給定設備上運行儀器測試包的測試
    • 選項:
      • package:要運行的Android測試應用程序的清單包名稱。
      • class:要運行的測試類名稱。
      • method:要運行的測試方法名稱。
  • 類名: AndroidJUnitTest

    • 函數:一種測試,它使用android.support.test.runner.AndroidJUnitRunner在給定的設備上運行檢測測試包。這是執行檢測測試的主要方法。