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

Создание одной монолитной XML-конфигурации для определения теста не всегда практично. Если вы захотите повторно использовать часть установки для запуска аналогичных тестов, вам придется скопировать и поддерживать два гигантских XML-файла.

Именно здесь пригодятся теги template и include в определении конфигурации Tradefed XML. Они позволяют вам устанавливать заполнители в некоторой конфигурации 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 с описанием того, что, по-видимому, отсутствует или неправильно настроено.