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 ogromne pliki XML.
W tym przypadku przydatne są tagi template
i include
w definicji konfiguracji XML Tradefed. Umożliwiają one ustawianie 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 symbolem name
, który umożliwia odwoływanie się do nich, oraz opcjonalnym polem default
. Pole domyślne określa domyślny plik XML zastępujący, który powinien być używany.
Aby zastąpić szablon w danej konfiguracji, do wiersza poleceń należy dodać ten parametr:
--template:map <name of template>=<replacement XML config path>
--template:map preparers=empty
Na przykład:
<template-include name="preparers" default="empty" />
W tym przypadku odwołanie empty
odnosi się do konfiguracji empty.xml
, która jest pusta. Używamy jej jako odniesienia, aby niczym zastąpić.
Ścieżka do 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 klauzuli includes
<configuration description="Common base configuration for local runs with minimum overhead">
<build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />
<include name="empty"/>
</configuration>
Pliki dołączane są prostsze niż szablony, ponieważ nie wymagają argumentów wiersza poleceń. Bezpośrednio rozwijają one 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 includes
zalecamy jednak używanie tylko ścieżek względnych, ponieważ są one bardziej przenośne w Tradefed.
Ścieżki bezwzględne nie będą prawidłowe, jeśli Tradefed zostanie przeniesiony na inne urządzenie.
Nieprawidłowa konfiguracja
W przypadku nieprawidłowej konfiguracji, np. gdy nie można znaleźć zastępczego pliku XML, Tradefed zgłosi ConfigurationException
z opisem tego, czego brakuje lub co jest nieprawidłowo skonfigurowane.