As configurações do Tradefed seguem uma estrutura XML para descrever o teste a ser executado e as etapas de preparação/configuração a serem realizadas.
Em teoria, tudo pode ser definido no XML para um único comando. Mas, prática, é mais prático ter arquivos XML de modelo base e personalizar com parâmetros de linha de comando extras.
Estrutura
<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>
O XML Tradefed geral é delimitado por tags <configuration>
. Os Tradefed
objects
são definidos nas próprias tags, por exemplo: build_provider
,
target_preparer
, test
etc. Os propósitos individuais são descritos com mais
detalhes na seção
Arquitetura.
Cada objeto tem a classe Java associada ao objeto definido em class=
.
que é resolvido no momento da execução, Portanto, desde que o arquivo JAR que contém a classe seja
no caminho de classe do Tradefed Java quando executado, ele será encontrado e resolvido.
Pedidos de objetos Tradefed
A ordem das tags não importa. Por exemplo, não há
diferença se build_provider
for especificado após target_preparer
. O fluxo da
invocação de teste é aplicado pelo próprio harness. Por isso, ele sempre será chamado
na ordem correta.
A ordem dos objetos com a mesma tag importa. Por exemplo, dois
objetos target_preparer
definidos serão chamados na ordem de definição no
XML. É importante entender isso, porque pode mudar o estado final da
configuração do dispositivo. Por exemplo, atualizar e instalar um apk não seria o
o mesmo que instalar um apk e atualizar, já que a atualização limparia o dispositivo.