Struktura wysokiego poziomu konfiguracji Tradefed XML

Konfiguracje Tradefed są zgodne ze strukturą XML opisującą test, który ma zostać przeprowadzony, oraz etapy przygotowania/konfiguracji, które należy wykonać.

Teoretycznie wszystko można zdefiniować w kodzie XML dla pojedynczego polecenia. Jednak w praktyce bardziej praktyczne jest posiadanie podstawowych plików XML szablonów i dostosowywanie ich za pomocą dodatkowych parametrów wiersza poleceń.

Struktura

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

Ogólny XML Tradefed jest ograniczony tagami <configuration> . Tradefed objects są definiowane we własnych tagach, na przykład: build_provider , target_preparer , test itp. Ich indywidualne przeznaczenie opisano szerzej w dziale Architektura .

Każdy obiekt ma klasę Java powiązaną z obiektem zdefiniowanym w class= , która jest rozpoznawana w czasie wykonywania; tak długo, jak plik JAR zawierający klasę znajduje się w ścieżce klas Tradefed Java podczas działania, zostanie znaleziony i rozwiązany.

Zamówienia na przedmioty podlegające wymianie

Kolejność różnych tagów nie ma znaczenia. Na przykład nie ma znaczenia, czy po parametrze target_preparer podano build_provider . Przebieg wywołania testu jest wymuszany przez samą uprząż, więc zawsze będzie wywoływał je we właściwej kolejności.

Kolejność obiektów z tym samym znacznikiem ma znaczenie . Na przykład dwa zdefiniowane obiekty target_preparer zostaną wywołane w kolejności ich definicji w kodzie XML. Ważne jest, aby to zrozumieć, ponieważ może to zmienić końcowy stan konfiguracji urządzenia. Na przykład flashowanie, a następnie instalacja aplikacji nie będzie tym samym, co instalowanie aplikacji i flashowanie, ponieważ flashowanie spowoduje wyczyszczenie urządzenia.