Structure de haut niveau de la configuration XML Tradefed

Les configurations 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 en XML pour une seule commande. Mais dans 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 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 le module Architecture .

Chaque objet comporte une classe Java associée à l'objet défini dans class=. résolues au moment de l'exécution ; Tant que le fichier JAR contenant la classe est 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érents tags n'a pas d'importance. Par exemple, aucune différence si build_provider est spécifié après target_preparer. Le flux de l'appel de test est appliqué par l'exploitant lui-même, de sorte qu'il appelle toujours dans le bon ordre.

L'ordre des objets portant la même balise est important. Par exemple, deux Les objets target_preparer définis seront appelés dans leur ordre de définition dans au format XML. Il est important de comprendre cela, car cela peut modifier l'état final la configuration de l'appareil. Par exemple, flasher, puis installer un APK ne constitue pas identique à l'installation et le flash d'un fichier APK, car cette opération efface les données de l'appareil.