创建一个单体式 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
包含定义示例
<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
,并说明缺少或配置错误的内容。