Allgemeine Struktur der Tradefed-XML-Konfiguration

Tradefed-Konfigurationen folgen einer XML-Struktur, um den auszuführenden Test zu beschreiben und die erforderlichen Vorbereitungs-/Einrichtungsschritte.

Theoretisch kann in der XML alles für einen einzigen Befehl definiert werden. In der Praxis ist es jedoch praktischer, XML-Dateien für die Vorlage zu haben und sie mit zusätzlichen Befehlszeilenparametern anzupassen.

Struktur

<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>

Die gesamte Tradefed-XML-Datei ist durch <configuration>-Tags getrennt. Tradefed objects werden in eigenen Tags definiert, z. B. build_provider, target_preparer, test usw. Ihre individuellen Zwecke werden im Abschnitt Architektur näher beschrieben.

Jedem Objekt ist die Java-Klasse zugewiesen, die dem in class= definierten Objekt zugeordnet ist und bei der Laufzeit aufgelöst wird. Solange sich die JAR-Datei mit der Klasse während der Ausführung im Java-Klassenpfad von Tradefed befindet, wird sie gefunden und aufgelöst.

Bestellungen von Tradefed-Objekten

Die Reihenfolge der verschiedenen Tags spielt keine Rolle. Es spielt beispielsweise keine Rolle, ob build_provider nach target_preparer angegeben wird. Der Ablauf der Testaufrufe wird vom Harness selbst erzwungen, sodass sie immer in der richtigen Reihenfolge aufgerufen werden.

Die Reihenfolge der Objekte mit dem gleichen Tag spielt jedoch eine Rolle. Beispielsweise werden zwei definierte target_preparer-Objekte in der Reihenfolge ihrer Definition in der XML-Datei aufgerufen. Es ist wichtig, dies zu verstehen, da sich dadurch der Endzustand eines die Geräteeinrichtung. Beispielsweise ist das Flashen und anschließende Installieren eines APK nicht dasselbe wie das Installieren eines APK und Flashen, da beim Flashen das Gerät gelöscht wird.