AndroidTest.xml 結構

模塊配置的整體結構遵循與常規 Tradefed XML 配置類似的模式,但由於它們作為套件的一部分運行,因此存在一些限制。

允許的標籤列表

AndroidTest.xml或更廣泛的模塊配置只能包含以下 XML 標籤: target_preparermulti_target_preparertestmetrics_collector

儘管該列表看起來很嚴格,但它允許您精確定義測試模塊設置需求和要運行的測試。

注意:如果您需要復習不同標籤,請參閱Tradefed XML 配置

如果嘗試從模塊配置內部運行,諸如build_providerresult_reporter類的對象將引發ConfigurationException 。這是為了避免期望這些對象實際上在模塊內執行某些任務。

示例模塊配置

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

此配置描述了一個需要安裝CtsGestureTestCases.apk的測試,並將針對android.gesture.cts包運行檢測。

“metrics_collector”標籤的特殊情況

允許使用metrics_collector但僅限於FilePullerLogCollector類,以便指定要為模塊提取和記錄的給定文件或目錄。如果您將日誌留在特定位置並希望自動恢復它們,這將非常有用。

示例配置:

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

構建信息或下載呢?

允許標籤的定義可能會給人錯誤的印象,即模塊不會獲得任何構建信息。這不是真的

構建信息由套件級設置提供,並將由套件的所有模塊共享。這允許對套件進行單一頂級設置,以便運行套件的所有模塊部分。

例如,不是每個兼容性測試套件 (CTS)模塊單獨查詢設備信息、類型等,而是 CTS 套件級設置 ( cts.xml ) 執行一次,並且每個模塊都會在請求時接收該信息。

為了讓模塊中的對象接收構建信息,它們需要執行與常規 Tradefed 配置相同的操作:實現IBuildReceiver接口以接收IBuildInfo 。有關更多詳細信息,請參閱使用設備進行測試

元數據字段

大量的測試模塊包括一些metadata規範,每個都有一個獨特的目標。

例子:

  <option name="config-descriptor:metadata" key="component" value="framework" />
  <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
  <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
  <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />

零件

component元數據描述了模塊打算測試的一般 Android 組件。它對測試執行沒有任何直接影響;它主要用於組織目的。

CtsConfigLoadingTest中提供了 CTS 允許組件的最新列表。如果將不存在的組件添加到 CTS 模塊,則此測試在預提交中失敗。

您可以使用module-metadata-include-filtermodule-metadata-exclude-filter根據組件過濾套件運行。

例子:

  --module-metadata-include-filter component framework

此示例僅運行使用framework組件註釋的測試模塊。

範圍

parameter元數據是信息性的,會影響測試執行。它指定測試模塊適用於哪個 Android 模式。在這種情況下,模式僅限於高級 Android 模式,例如instant appssecondary usersdifferent abis

在套件運行期間,如果該模式適用於測試,則會基於該模式創建測試模塊的多個變體。每個變體都運行類似的測試,但在不同的模式下。

  • instant_app :創建將 APK 安裝為即時應用程序的測試變體。
  • multi_abi :為設備支持的每個 ABI 創建測試的變體。
  • secondary_user :創建安裝 APK 並以次要用戶身份運行測試的測試變體。