Tradefed XML 構成のテンプレートとインクルード

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 がスローされます。