Oberstruktur der Tradefed-XML-Konfiguration

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

Theoretisch kann alles im XML für einen einzigen Befehl definiert werden. In der Praxis ist es jedoch praktischer, über Basis-XML-Vorlagendateien zu verfügen und diese 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>

Das gesamte Tradefed-XML wird durch <configuration> -Tags begrenzt. Tradefed objects werden in ihren eigenen Tags definiert, zum Beispiel: build_provider , target_preparer , test usw. Ihre einzelnen Zwecke werden im Abschnitt „Architektur“ ausführlicher beschrieben.

Für jedes Objekt ist die Java-Klasse mit dem in class= definierten Objekt verknüpft, das zur Laufzeit aufgelöst wird. Solange sich die JAR-Datei, die die Klasse enthält, bei 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 macht beispielsweise keinen Unterschied, wenn build_provider nach target_preparer angegeben wird. Der Ablauf des Testaufrufs wird durch den Harness selbst erzwungen, sodass er sie immer in der richtigen Reihenfolge aufruft.

Die Reihenfolge der Objekte mit demselben Tag spielt eine Rolle . Beispielsweise werden zwei definierte target_preparer Objekte in der Reihenfolge ihrer Definition im XML aufgerufen. Es ist wichtig, dies zu verstehen, da es den Endzustand der Geräteeinrichtung ändern kann. Beispielsweise wäre das Flashen und anschließende Installieren einer APK nicht dasselbe wie das Installieren einer APK und das Flashen, da das Flashen das Gerät löschen würde.