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 對象的訂單
不同標籤的順序無關緊要。例如,如果build_provider
在target_preparer
之後指定,則沒有區別。測試調用的流程由工具本身強制執行,因此它將始終以正確的順序調用它們。
具有相同標籤的對象的順序很重要。例如,定義的兩個target_preparer
對象將按照它們在 XML 中的定義順序被調用。理解這一點很重要,因為它可以改變設備設置的最終狀態。例如,刷機然後安裝 apk與安裝 apk 並刷機不同,因為刷機會擦除設備。