Tradefed XML 配置中的模板和包含

創建一個單一的 XML 配置來定義測試並不總是可行的。如果您想重新使用部分設置來運行類似的測試,您將被迫複製和維護兩個巨大的 XML 文件。

這就是 Tradefed XML 配置定義中的templateinclude標籤派上用場的地方。它們允許您在某些 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配置不包含任何內容;我們用它作為我們的參考來替換 nothing

XML 配置的路徑可以是絕對或相對於 Tradefed 的 JAR 資源中的res/config文件夾。以下是他們的一些位置:

  • 工具/tradefederation/core/res/config
  • 工具/tradefederation/core/tests/res/config
  • 工具/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並描述似乎缺少或配置錯誤的內容。