Шаблоны и включения в XML-конфигурацию Tradefed

Создание одной монолитной 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 с описанием того, что кажется отсутствующим или неправильно настроенным.