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 字段。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,其中包含有关似乎缺少或配置错误的内容的描述。