Создание одной монолитной XML-конфигурации для определения теста не всегда целесообразно. Если вы хотите повторно использовать часть установки для запуска аналогичных тестов, вам придется копировать и поддерживать два гигантских XML-файла.
Здесь пригодятся теги template
и include
в определении XML-конфигурации Tradefed. Они позволяют вам установить заполнители в некоторой конфигурации XML, чтобы добавить часть другой конфигурации XML.
Пример определения для шаблонов
<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>
Шаблоны — это заполнители с name
для ссылки на них и необязательным полем default
. Поле по умолчанию определяет замещающий XML по умолчанию, который следует использовать.
Чтобы заменить шаблон для данной конфигурации, необходимо добавить в командную строку следующий параметр команды:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Например:
<template-include name="preparers" default="empty" />
empty
ссылка в этом случае относится к конфигурации empty.xml
, которая ничего не содержит; мы используем его как ссылку, чтобы заменить ничем .
Путь к XML-конфигурациям может быть абсолютным или относительным относительно папки res/config
внутри JAR-ресурсов Tradefed. Вот некоторые из их местонахождений:
- инструменты/торговая федерация/ядро/рез/конфигурация
- инструменты/торговая федерация/ядро/тесты/рез/конфигурация
- инструменты/tradedeferation/contrib/res/config
Пример определения включения
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Включения проще, чем шаблоны, поскольку они не требуют аргументов командной строки; они напрямую расширяют указанный XML в теге name
. Как и в случае с шаблонами, путь к конфигу может быть абсолютным или относительным. Тем не менее, для includes
мы рекомендуем использовать только относительные пути, поскольку они более переносимы в Tradefed. Абсолютные пути недействительны, если Tradefed перемещается на другую машину.
Неправильная конфигурация
В случае неправильной конфигурации, например, когда XML-код для замены не может быть найден, Tradefed выдаст исключение ConfigurationException
с описанием того, что кажется отсутствующим или неправильно настроенным.