โครงสร้างระดับสูงของการกำหนดค่า XML ของ Tradefed

การกําหนดค่าของ 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>

XML ของ Tradefed โดยรวมคั่นด้วยแท็ก <configuration> Tradefed objects จะกําหนดไว้ในแท็กของตัวเอง เช่น build_provider, target_preparer, test ฯลฯ วัตถุประสงค์ของแต่ละรายการจะอธิบายไว้อย่างละเอียดในส่วนสถาปัตยกรรม

ออบเจ็กต์แต่ละรายการจะมีคลาส Java ที่เชื่อมโยงกับออบเจ็กต์ที่กําหนดไว้ใน class= ที่แก้ไขได้เมื่อรันไทม์ ดังนั้น ตราบใดที่ไฟล์ JAR ที่มีคลาสอยู่ในเส้นทาง Class ของ Java ใน Tradefed เมื่อรัน ระบบก็จะพบและแก้ไขคลาสนั้นได้

ลำดับของออบเจ็กต์ Tradefed

ลำดับของแท็กที่ต่างกันนั้นไม่สำคัญ เช่น ไม่ว่าจะระบุ build_provider หลัง target_preparer หรือไม่ก็ตาม ผลลัพธ์จะเหมือนกัน การดำเนินขั้นตอนของการเรียกใช้ทดสอบนั้นบังคับใช้โดยตัวควบคุมเอง เพื่อให้มีการเรียกใช้ตามลำดับที่ถูกต้องเสมอ

ลำดับของออบเจ็กต์ที่มีแท็กเดียวกันมีความสำคัญ เช่น ระบบจะเรียกใช้ออบเจ็กต์ target_preparer 2 รายการตามลำดับของคำจำกัดความใน XML คุณควรทำความเข้าใจเรื่องนี้เนื่องจากอาจเปลี่ยนสถานะสุดท้ายของการตั้งค่าอุปกรณ์ได้ เช่น การแฟลชแล้วติดตั้ง APK จะแตกต่างจากการติดตั้ง APK และการแฟลช เนื่องจากการแฟลชจะล้างข้อมูลในอุปกรณ์