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
等。它們各自的用途在架構部分中有更詳細的描述。
每個物件都有與class=
中定義的物件關聯的 Java 類,該類別在運行時解析;因此,只要包含該類別的 JAR 檔案在運行時位於 Tradefed Java 類別路徑上,它就會被找到並解析。
Tradefed 物件的順序
不同標籤的順序並不重要。例如,如果在target_preparer
之後指定build_provider
沒有什麼差別。測試呼叫流程由工具本身強制執行,因此它始終會以正確的順序呼叫它們。
具有相同標籤的物件的順序很重要。例如,定義的兩個target_preparer
物件將按照它們在 XML 中的定義順序被呼叫。了解這一點很重要,因為它可以改變設備設定的最終狀態。例如,閃爍然後安裝 apk 與安裝apk 並閃爍不同,因為閃爍會擦除裝置。