Tworzenie jednej monolitycznej konfiguracji XML do zdefiniowania testu nie zawsze jest praktyczne. Jeśli chcesz ponownie użyć części konfiguracji do przeprowadzenia podobnych testów, musisz skopiować i utrzymywać 2 duże pliki XML.
W tym przypadku przydadzą się tagi template i include w definicji konfiguracji Tradefed XML. Umożliwiają one ustawienie symboli zastępczych w niektórych konfiguracjach XML, aby dodać część innej konfiguracji XML.
Przykładowa definicja szablonów
<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>
Szablony to symbole zastępcze z polem name służącym do odwoływania się do nich oraz opcjonalnym polem default. Pole domyślne określa domyślny zastępczy kod XML, który ma być używany.
Aby zastąpić szablon w danej konfiguracji, do wiersza poleceń należy dodać ten parametr polecenia:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Przykład:
<template-include name="preparers" default="empty" />
Odwołanie empty w tym przypadku odnosi się do konfiguracji empty.xml, która
nie zawiera niczego. Używamy jej jako odniesienia do zastąpienia niczym.
Ścieżka konfiguracji XML może być bezwzględna lub względna względem folderu res/config w zasobach JAR Tradefed. Oto kilka lokalizacji:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/contrib/res/config
Przykładowa definicja elementów dołączanych
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Elementy dołączane są prostsze niż szablony, ponieważ nie wymagają argumentów wiersza poleceń. Bezpośrednio rozwijają odwołujący się do nich kod XML w tagu name. Podobnie jak w przypadku szablonów ścieżka do konfiguracji może być bezwzględna lub względna. W przypadku elementów dołączanych zalecamy jednak używanie tylko ścieżek względnych, ponieważ są one bardziej przenośne w Tradefed.includes
Ścieżki bezwzględne nie będą prawidłowe, jeśli Tradefed zostanie przeniesiony na inny komputer.
Nieprawidłowa konfiguracja
W przypadku nieprawidłowej konfiguracji, np. gdy nie można znaleźć zastępczego kodu XML, Tradefed zgłosi wyjątek ConfigurationException z opisem tego, czego brakuje lub co jest nieprawidłowo skonfigurowane.