Las configuraciones de Tradefed siguen una estructura XML para describir la prueba que se ejecutará y los pasos de preparación o configuración que se deben realizar.
En teoría, todo se puede definir en el XML para un solo comando. Sin embargo, en la práctica, es más conveniente tener archivos XML de plantillas base y personalizarlos con parámetros adicionales de la línea de comandos.
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 general de Tradefed está delimitado por etiquetas <configuration>
. Tradefed
objects
se definen en sus propias etiquetas, por ejemplo: build_provider
, target_preparer
, test
, etcétera. Sus propósitos individuales se describen con más detalle en la sección Arquitectura.
Cada objeto tiene la clase Java asociada con el objeto definido en class=
que se resuelve en el tiempo de ejecución. Por lo tanto, siempre que el archivo JAR que contiene la clase esté en la ruta de acceso de clase de Java de Tradefed cuando se ejecute, se encontrará y resolverá.
Órdenes de objetos de Tradefed
El orden de las diferentes etiquetas no importa. Por ejemplo, no hay diferencia si build_provider
se especifica después de target_preparer
. El propio arnés impone el flujo de la invocación de la prueba, 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 el orden de su definición en el XML. Es importante comprender esto, ya que puede cambiar el estado final de la configuración del dispositivo. Por ejemplo, grabar y, luego, instalar un APK no sería lo mismo que instalar un APK y grabar, ya que la grabación borraría el dispositivo.