Criar uma configuração XML monolítica para definir um teste nem sempre é prático. Se você quiser reutilizar parte da configuração para executar testes semelhantes, será forçado a copiar e manter dois arquivos XML gigantes.
É aqui que template
e as tags include
na definição da configuração XML do Tradefed são úteis. Eles permitem definir espaços reservados em algumas configurações XML para adicionar parte de outra configuração XML.
Definição de exemplo para modelos
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<template-include name="preparers" default="empty" />
<template-include name="test" default="empty" />
<template-include name="reporters" default="empty" />
</configuration>
Os modelos são espaços reservados com um name
para referenciá-los e um campo default
opcional. O campo padrão define o XML de substituição padrão que deve ser usado.
Para substituir um modelo para uma determinada configuração, o seguinte parâmetro de comando precisa ser adicionado à linha de comando:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Por exemplo:
<template-include name="preparers" default="empty" />
A referência empty
neste caso refere-se à configuração empty.xml
que não contém nada; nós o usamos como referência para substituir por nada .
O caminho das configurações XML pode ser absoluto ou relativo à pasta res/config
dentro dos recursos JAR do Tradefed. Aqui estão algumas de suas localizações:
- ferramentas/tradefederation/core/res/config
- ferramentas/tradefederation/core/testes/res/config
- ferramentas/tradedeferation/contrib/res/config
Exemplo de definição de inclui
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
As inclusões são mais simples que os modelos, pois não requerem argumentos de linha de comando; eles expandem diretamente o XML referenciado na tag name
. Semelhante aos modelos, o caminho para a configuração pode ser absoluto ou relativo. Ainda assim, para includes
recomendamos usar apenas caminhos relativos, pois são mais portáveis no Tradefed. Os caminhos absolutos não seriam válidos se o Tradefed fosse movido para outra máquina.
Configuração incorreta
Em caso de configuração incorreta, como quando o XML substituto não pode ser encontrado, o Tradefed lançará uma ConfigurationException
com a descrição do que parece estar faltando ou configurado incorretamente.