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_providertarget_preparer之後指定,則沒有區別。測試調用的流程由工具本身強制執行,因此它將始終以正確的順序調用它們。

具有相同標籤的對象的順序很重要。例如,定義的兩個target_preparer對象將按照它們在 XML 中的定義順序被調用。理解這一點很重要,因為它可以改變設備設置的最終狀態。例如,刷機然後安裝 apk安裝 apk 並刷機不同,因為刷機會擦除設備。