Wysoki poziom struktury konfiguracji XML Tradefed

Konfiguracje Tradefed mają strukturę XML opisującą test, który ma zostać uruchomiony oraz wykonać czynności związane z przygotowaniami/konfiguracją.

Teoretycznie wszystko można zdefiniować w pliku XML dla jednego polecenia. Ale w praktyk, lepiej jest mieć podstawowe pliki XML szablonu i dostosować używając 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 plik XML Tradefed jest rozdzielany tagami <configuration>. Tradefed objects są zdefiniowane w osobnych tagach, np. build_provider, target_preparer, test itp. Indywidualne cele ich działań zostały opisane bardziej w architekturze. .

Każdy obiekt ma klasę Java powiązaną z obiektem zdefiniowaną w class= który jest usuwany w czasie działania; o ile plik JAR zawierający klasę jest w ścieżce klasy Java Tradefed podczas uruchamiania zostanie znaleziony i rozwiązany.

Kolejność obiektów Tradefed

Kolejność różnych tagów nie ma znaczenia. Nie powoduje to na przykład jeśli wartość build_provider została określona po target_preparer. Przepływ Wywołanie testowe jest egzekwowane przez samą uprzęż, więc zawsze wywołuje w odpowiedniej kolejności.

Kolejność obiektów z tym samym tagiem ma znaczenie. Na przykład dwa Zdefiniowane obiekty (target_preparer) będą wywoływane w kolejności definicji w kod XML. Trzeba to zrozumieć, bo może to zmienić stan końcowy konfiguracji urządzenia. Na przykład zainstalowanie i zainstalowanie pakietu apk nie powinno To samo co instalowanie pakietu apk i flashowanie, ponieważ flashowanie wyczyści pamięć urządzenia.