1 つのモノリシック XML 構成を作成してテストを定義することは、必ずしも現実的ではありません。セットアップの一部を再利用して同様のテストを実行する場合は、2 つの大きな XML ファイルをコピーして維持しなければなりません。
ここで Tradefed XML 構成定義の template
タグと include
タグが役立ちます。ある 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
フィールドを持つプレースホルダです。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 構成のパスは、Tradefed の JAR リソース内にある res/config
フォルダに対する相対パスまたは絶対パスを指定できます。それらの場所をいくつか示します。
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/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>
インクルードは、コマンドライン引数を必要としないためテンプレートよりもシンプルであり、name
タグで参照される XML を直接展開します。テンプレートと同様に、構成へのパスは絶対パスまたは相対パスを指定できます。それでも、移植性が高いため、includes
では相対パスのみを使用することをおすすめします。Tradefed を別のマシンに移動すると、絶対パスは無効になります。
構成ミス
置換する XML が見つからない場合など、構成が誤っている場合は、考えられる欠落または構成の誤りに関する説明とともに ConfigurationException
がスローされます。