Создание единого монолитного 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. Вот несколько примеров их расположения:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/conrib/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 с описанием того, что, по-видимому, отсутствует или неправильно настроено.