建立單一 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
欄位。「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
包含項目的定義範例
<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
,並說明似乎缺少或設定錯誤的項目。