建立一個單一 XML 設定來定義測試不一定實用。如果您想重複使用部分設定來執行類似的測試,就必須複製並維護兩個巨大的 XML 檔案。
這就是 Tradefed XML 設定定義中的 template
和 include
標記派上用場的地方。您可以在某些 XML 設定中設定預留位置,以便新增其他 XML 設定的部分內容。
範本定義範例
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<template-include name="preparers" default="empty" />
<template-include name="test" default="empty" />
<template-include name="reporters" default="empty" />
</configuration>
範本是具有 name
用來參照範本的預留位置,此外則為選填的 default
欄位。預設欄位會定義應使用的預設替換 XML。
如要替換特定設定的範本,請在指令列中加入下列指令參數:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
例如:
<template-include name="preparers" default="empty" />
在此情況下,empty
參照會參照不含任何內容的 empty.xml
設定;我們會將其用於替換為空值。
XML 設定的路徑可以是 Tradefed JAR 資源中 res/config
資料夾的絕對路徑或相對路徑。以下列舉其中幾個地點:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/contrib/res/config
範例定義:includes
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
「包含」比範本更簡單,因為這類項目不需要指令列引數,可直接展開 name
標記中參照的 XML。與範本類似,設定檔的路徑可以是絕對路徑或相對路徑。不過,對於 includes
,我們建議只使用相對路徑,因為在 Tradefed 中,相對路徑的移植性較高。如果 Tradefed 移至其他機器,絕對路徑就會失效。
設定錯誤
如果發生設定錯誤 (例如找不到替換 XML),Tradefed 會擲回 ConfigurationException
,並說明缺少或設定錯誤的項目。