Estructura de alto nivel de la configuración XML de Tradefed

Las configuraciones de Tradefed siguen una estructura XML para describir la prueba que se ejecutará y los pasos de preparación/configuración que se realizarán.

En teoría, todo se puede definir en XML para un solo comando. Pero en la práctica, es más práctico tener archivos XML de plantilla base y personalizarlos con parámetros de línea de comando adicionales.

Estructura

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

El XML Tradefed general está delimitado por etiquetas <configuration> . Tradefed objects se definen en sus propias etiquetas, por ejemplo: build_provider , target_preparer , test , etc. Sus propósitos individuales se describen con más detalle en la sección Arquitectura .

Cada objeto tiene la clase Java asociada al objeto definido en class= que se resuelve en tiempo de ejecución; Por lo tanto, siempre que el archivo JAR que contiene la clase esté en la ruta de clases de Java Tradefed cuando se ejecuta, se encontrará y se resolverá.

Órdenes de objetos Tradefed

No importa el orden de las diferentes etiquetas. Por ejemplo, no hay diferencia si se especifica build_provider después de target_preparer . El flujo de la invocación de prueba lo impone el propio arnés, por lo que siempre las llamará en el orden correcto.

El orden de los objetos con la misma etiqueta sí importa . Por ejemplo, dos objetos target_preparer definidos se llamarán en su orden de definición en el XML. Es importante entender esto ya que puede cambiar el estado final de la configuración del dispositivo. Por ejemplo, flashear y luego instalar una apk no sería lo mismo que instalar una apk y flashear, ya que flashear borraría el dispositivo.