โครงสร้างระดับสูงของการกำหนดค่า 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_provider , target_preparer , test ฯลฯ วัตถุประสงค์เฉพาะของออบเจ็กต์เหล่านี้มีการอธิบายรายละเอียดเพิ่มเติมไว้ในส่วน สถาปัตยกรรม

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

คำสั่งของวัตถุที่ซื้อขาย

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

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