Créer une configuration XML monolithique pour définir un test n'est pas toujours pratique. Si vous souhaitez réutiliser une partie de la configuration pour exécuter des tests similaires, vous seriez obligé de copier et de conserver deux fichiers XML géants.
C'est là que template
et les balises include
dans la définition de configuration XML Tradefed sont utiles. Ils vous permettent de définir des espaces réservés dans certaines configurations XML pour ajouter une partie d'une autre configuration XML.
Exemple de définition pour les modèles
<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>
Les modèles sont des espaces réservés avec un name
pour les référencer et un champ default
par défaut. Le champ par défaut définit le XML de remplacement par défaut qui doit être utilisé.
Afin de remplacer un modèle pour une configuration donnée, le paramètre de commande suivant doit être ajouté à la ligne de commande :
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Par exemple:
<template-include name="preparers" default="empty" />
La référence empty
dans ce cas fait référence à la configuration empty.xml
qui ne contient rien ; nous l'utilisons comme référence pour le remplacer par rien .
Le chemin des configurations XML peut être absolu ou relatif au dossier res/config
dans les ressources JAR de Tradefed. Voici quelques-uns de leurs emplacements :
- outils/tradefederation/core/res/config
- outils/tradefederation/core/tests/res/config
- outils/tradedeferation/contrib/res/config
Exemple de définition d'inclut
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Les inclusions sont plus simples que les modèles car elles ne nécessitent aucun argument de ligne de commande ; ils développent directement le XML référencé dans la balise name
. Semblable aux modèles, le chemin d’accès à la configuration peut être absolu ou relatif. Néanmoins, pour includes
, nous vous recommandons d'utiliser uniquement des chemins relatifs car ils sont plus portables dans Tradefed. Les chemins absolus ne seraient pas valides si Tradefed était déplacé vers une autre machine.
Mauvaise configuration
En cas de mauvaise configuration, par exemple lorsque le XML de remplacement est introuvable, Tradefed lancera une ConfigurationException
avec une description de ce qui semble manquer ou mal configuré.