Crear una configuración XML monolítica para definir una prueba no siempre es práctico. Si desea reutilizar parte de la configuración para ejecutar pruebas similares, se verá obligado a copiar y mantener dos archivos XML gigantes.
Aquí es donde template
y las etiquetas de include
en la definición de configuración XML de Tradefed resultan útiles. Le permiten establecer marcadores de posición en alguna configuración XML para agregar parte de otra configuración XML.
Definición de ejemplo para plantillas
<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>
Las plantillas son marcadores de posición con un name
para hacer referencia a ellas y un campo default
opcional. El campo predeterminado define el XML de reemplazo predeterminado que debe usarse.
Para reemplazar una plantilla para una configuración determinada, se debe agregar el siguiente parámetro de comando a la línea de comando:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Por ejemplo:
<template-include name="preparers" default="empty" />
La referencia empty
en este caso se refiere a la configuración empty.xml
que no contiene nada; lo usamos como nuestra referencia para reemplazar con nada .
La ruta de las configuraciones XML puede ser absoluta o relativa a la carpeta res/config
dentro de los recursos JAR de Tradefed. Estas son algunas de sus ubicaciones:
- herramientas/tradefederation/core/res/config
- herramientas/tradefederation/core/pruebas/res/config
- herramientas/tradeferation/contrib/res/config
Ejemplo de definición de incluye
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Las inclusiones son más sencillas que las plantillas, ya que no requieren argumentos de línea de comandos; expanden directamente el XML al que se hace referencia en la etiqueta de name
. Similar a las plantillas, la ruta a la configuración puede ser absoluta o relativa. Aún así, para las includes
, recomendamos usar solo rutas relativas, ya que son más portátiles en Tradefed. Las rutas absolutas no serían válidas si Tradefed se traslada a otra máquina.
Configuración incorrecta
En caso de configuración incorrecta, como cuando no se puede encontrar el XML de reemplazo, Tradefed generará una ConfigurationException
con una descripción de lo que parece faltar o estar mal configurado.