Создание единой монолитной 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
, которая ничего не содержит; мы используем ее в качестве ссылки для замены на nothing .
Путь к XML-конфигурациям может быть абсолютным или относительным к папке res/config
внутри JAR-ресурсов Tradefed. Вот некоторые из их расположений:
- инструменты/tradefederation/core/res/config
- инструменты/tradefederation/core/tests/res/config
- tools/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
с описанием того, что, по всей видимости, отсутствует или неправильно настроено.