Die Konfigurationen von Tradefed folgen einer XML-Struktur, um den auszuführenden Test und die erforderlichen Vorbereitungs-/Einrichtungsschritte zu beschreiben.
Theoretisch kann in der XML-Datei alles für einen einzelnen 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 begrenzt. 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 im class=
-Objekt definiert ist und zur Laufzeit aufgelöst wird. Solange sich die JAR-Datei mit der Klasse während der Ausführung im Tradefed-Java-Klassenpfad befindet, wird sie gefunden und aufgelöst.
Bestellungen von Tradefed-Objekten
Die Reihenfolge der Tags spielt dabei 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. Beispiel: Zwei definierte target_preparer
-Objekte werden in der Reihenfolge ihrer Definition in der XML-Datei aufgerufen. Das ist wichtig, da sich dadurch der Endstatus der Geräteeinrichtung ändern kann. 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.