Estrutura de alto nível da configuração XML do Tradefed

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 do Tradefed geral é delimitado por tags <configuration>. Tradefed objects são definidos nas próprias tags, por exemplo: build_provider, target_preparer, test etc. As finalidades individuais são descritas em mais detalhes em Arquitetura nesta seção.

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 de a invocação de teste é aplicada pelo próprio arcabouço, então ele sempre vai chamar na ordem certa.

A ordem dos objetos com a mesma tag importa. Por exemplo, dois Os objetos target_preparer definidos serão chamados na ordem de definição deles em no XML. É importante entender isso, pois pode alterar o estado final de a 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.