Высокоуровневая структура конфигурации Tradefed XML

Конфигурации Tradefed соответствуют структуре XML для описания теста, который необходимо запустить, а также шагов подготовки/настройки, которые необходимо выполнить.

Теоретически всё можно определить в XML для одной команды. Но на практике удобнее иметь базовые XML-файлы-шаблоны и настраивать их с помощью дополнительных параметров командной строки.

Структура

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

Весь XML-файл Tradefed ограничен тегами <configuration> . Tradefed objects определяются в собственных тегах, например: build_provider , target_preparer , test и т. д. Их индивидуальное назначение более подробно описано в разделе «Архитектура» .

Каждый объект имеет класс Java, связанный с объектом, определенным в class= , который разрешается во время выполнения; поэтому, если файл JAR, содержащий класс, находится в пути к классам Java Tradefed во время выполнения, он будет найден и разрешен.

Заказы объектов Tradefed

Порядок различных тегов не имеет значения. Например, не имеет значения, указан ли build_provider после target_preparer . Последовательность вызова теста определяется самой средой, поэтому она всегда будет вызывать их в правильном порядке.

Порядок объектов с одинаковым тегом имеет значение . Например, два объекта target_preparer , определённые в XML, будут вызываться в порядке их определения. Важно понимать это, поскольку это может изменить конечное состояние настройки устройства. Например, перепрошивка с последующей установкой APK-файла не будет равнозначна установке APK-файла и перепрошивке, поскольку перепрошивка приведёт к удалению данных с устройства.