Les configurations de Tradefed suivent une structure XML pour décrire le test à exécuter et les étapes de préparation/configuration à effectuer.
En théorie, tout peut être défini dans le fichier XML pour une seule commande. Toutefois, en pratique, il est plus judicieux d'avoir des fichiers XML de modèle de base et de les personnaliser avec des paramètres de ligne de commande supplémentaires.
Structure
<configuration description="<description of the configuration>">
<!-- A build provider that takes local device information -->
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<!-- Some target preparation, disabled by default -->
<target_preparer class="com.android.tradefed.targetprep.PreloadedClassesPreparer">
<option name="disable" value="true" />
</target_preparer>
<!-- One test running some unit tests -->
<test class="com.android.tradefed.testtype.HostTest">
<option name="class" value="com.android.tradefed.build.BuildInfoTest" />
</test>
<!-- [OPTIONAL] -->
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level" value="VERBOSE" />
<option name="log-level-display" value="VERBOSE" />
</logger>
<!-- [OPTIONAL] -->
<log_saver class="com.android.tradefed.result.FileSystemLogSaver" />
<!-- As many reporters as we want -->
<result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />
<result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
<result_reporter class="com.android.tradefed.result.MetricsXMLResultReporter"/>
</configuration>
Le fichier XML Tradefed global est délimité par des balises <configuration>
. Les Tradefed
objects
sont définis dans leurs propres balises, par exemple build_provider
, target_preparer
, test
, etc. Leurs objectifs individuels sont décrits plus en détail dans la section Architecture.
Chaque objet possède la classe Java associée à l'objet défini dans class=
qui est résolu au moment de l'exécution. Par conséquent, tant que le fichier JAR contenant la classe se trouve sur le classpath Java Tradefed lors de l'exécution, il sera trouvé et résolu.
Ordres des objets Tradefed
L'ordre des différentes balises n'a pas d'importance. Par exemple, l'ordre dans lequel build_provider
et target_preparer
sont spécifiés n'a aucune importance. Le flux d'appel de test est appliqué par le harnais lui-même, de sorte qu'il les appellera toujours dans le bon ordre.
L'ordre des objets ayant le même tag est important. Par exemple, deux objets target_preparer
définis seront appelés dans l'ordre de leur définition dans le fichier XML. Il est important de comprendre cela, car cela peut modifier l'état final de la configuration de l'appareil. Par exemple, flasher puis installer un APK n'est pas la même chose que installer un APK et flasher, car le flashage efface les données de l'appareil.