Tradefed XML 構成の高レベル構造

Tradefed の構成は XML 構造に従って、実行するテストと実行する準備/セットアップ手順を記述します。

理論的には、単一のコマンドの XML ですべてを定義できます。ただし、実際には、基本テンプレート XML ファイルを用意し、追加のコマンド ライン パラメーターを使用してカスタマイズする方が現実的です。

構造

<configuration description="<description of the configuration>">
    <!-- A build provider that takes local device information -->
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <!-- Some target preparation, disabled by default -->
    <target_preparer class="com.android.tradefed.targetprep.PreloadedClassesPreparer">
        <option name="disable" value="true" />
    </target_preparer>

    <!-- One test running some unit tests -->
    <test class="com.android.tradefed.testtype.HostTest">
        <option name="class" value="com.android.tradefed.build.BuildInfoTest" />
    </test>

    <!-- [OPTIONAL] -->
    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level" value="VERBOSE" />
        <option name="log-level-display" value="VERBOSE" />
    </logger>

    <!-- [OPTIONAL] -->
    <log_saver class="com.android.tradefed.result.FileSystemLogSaver" />

    <!-- As many reporters as we want -->
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />
    <result_reporter class="com.android.tradefed.result.suite.SuiteResultReporter" />
    <result_reporter class="com.android.tradefed.result.MetricsXMLResultReporter"/>
</configuration>

Tradefed XML 全体は、 <configuration>タグで区切られます。 Tradefed objects 、独自のタグ (例: build_providertarget_preparertestなど) で定義されます。それらの個々の目的については、 「アーキテクチャ」セクションで詳しく説明します。

各オブジェクトには、実行時に解決されるclass=で定義されたオブジェクトに関連付けられた Java クラスがあります。そのため、クラスを含む JAR ファイルが実行時に Tradefed Java クラスパス上にある限り、そのファイルは検出されて解決されます。

Tradefed オブジェクトの注文

さまざまなタグの順序は重要ではありません。たとえば、 build_provider target_preparerの後に指定されても、違いはありません。テスト呼び出しのフローはハーネス自体によって強制されるため、テストは常に正しい順序で呼び出されます。

同じタグを持つオブジェクトの順序は重要です。たとえば、定義された 2 つのtarget_preparerオブジェクトは、XML での定義順に呼び出されます。デバイス セットアップの最終状態が変わる可能性があるため、これを理解することが重要です。たとえば、フラッシュするとデバイスがワイプされるため、フラッシュしてから APK をインストールすること、APK をインストールしてフラッシュすることと同じではありません。