Structure de haut niveau de la configuration XML de Tradefed

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 XML pour une seule commande. Mais en pratique, il est plus pratique 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 XML global de Tradefed est délimité par des balises <configuration> . 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ésolue au moment de l'exécution ; ainsi, tant que le fichier JAR contenant la classe se trouve sur le chemin de classe Java Tradefed lors de l'exécution, il sera trouvé et résolu.

Commandes d'objets Tradefed

L'ordre des différentes balises n'a pas d'importance. Par exemple, cela ne fait aucune différence si build_provider est spécifié après target_preparer . Le flux de l'invocation du test est appliqué par le harnais lui-même, il les appellera donc toujours dans le bon ordre.

L'ordre des objets avec la même balise est important . Par exemple, deux objets target_preparer définis seront appelés dans leur ordre de définition dans le 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 ne serait pas la même chose que installer un apk et flasher puisque le flash effacerait l'appareil.