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 配置。我们就将其用作无所知参考。

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,并说明缺少或配置错误的内容。