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_provider
、target_preparer
、test
等。如要進一步瞭解個別用途,請參閱「架構」一節。
每個物件都有與物件相關聯的 Java 類別,該類別定義於 class=
中,會在執行階段解析;因此只要包含類別的 JAR 檔案位於執行時的 Tradefed Java 類別路徑中,系統就會找到並解析該類別。
Tradefed 物件的順序
不同標記的順序沒有影響。舉例來說,如果 build_provider
是在 target_preparer
之後指定,則不會有任何差異。測試呼叫的流程是由架構本身強制執行,因此一律會依正確順序呼叫這些流程。
相同標記的物件順序很重要。舉例來說,系統會按照 XML 中定義的順序呼叫兩個 target_preparer
物件。請務必瞭解這點,因為這可能會改變裝置設定的最終狀態。舉例來說,先刷機再安裝 APK,與先安裝 APK 再刷機不同,因為刷機會抹除裝置資料。