模塊配置的整體結構遵循與常規 Tradefed XML 配置類似的模式,但由於它們作為套件的一部分運行,因此存在一些限制。
允許的標籤列表
AndroidTest.xml
或更廣泛的模塊配置只能包含以下 XML 標籤: target_preparer
、 multi_target_preparer
、 test
和metrics_collector
。
儘管該列表看起來很嚴格,但它允許您精確定義測試模塊設置需求和要運行的測試。
注意:如果您需要復習不同標籤,請參閱Tradefed XML 配置。
如果嘗試從模塊配置內部運行,諸如build_provider
或result_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-filter
和module-metadata-exclude-filter
根據組件過濾套件運行。
例子:
--module-metadata-include-filter component framework
此示例僅運行使用framework
組件註釋的測試模塊。
範圍
parameter
元數據是信息性的,會影響測試執行。它指定測試模塊適用於哪個 Android 模式。在這種情況下,模式僅限於高級 Android 模式,例如instant apps
、 secondary users
或different abis
。
在套件運行期間,如果該模式適用於測試,則會基於該模式創建測試模塊的多個變體。每個變體都運行類似的測試,但在不同的模式下。
-
instant_app
:創建將 APK 安裝為即時應用程序的測試變體。 -
multi_abi
:為設備支持的每個 ABI 創建測試的變體。 -
secondary_user
:創建安裝 APK 並以次要用戶身份運行測試的測試變體。