Struktur tingkat tinggi dari konfigurasi XML Tradefed

Konfigurasi Tradefed mengikuti struktur XML untuk menjelaskan pengujian yang akan dijalankan dan langkah-langkah persiapan/penyiapan yang harus dilakukan.

Secara teori, semuanya dapat didefinisikan dalam XML untuk satu perintah. Namun dalam praktiknya, akan lebih praktis jika memiliki file XML templat dasar dan menyesuaikannya dengan parameter baris perintah tambahan.

Struktur

<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 secara keseluruhan dibatasi oleh tag <configuration> . Tradefed objects didefinisikan dalam tagnya sendiri, misalnya: build_provider , target_preparer , test , dll. Tujuan masing-masing objek dijelaskan secara lebih rinci di bagian Arsitektur .

Setiap objek memiliki kelas Java yang terkait dengan objek yang didefinisikan dalam class= yang diselesaikan saat runtime; jadi selama file JAR yang berisi kelas tersebut berada di classpath Tradefed Java saat dijalankan, maka akan ditemukan dan diselesaikan.

Pesanan objek Tradefed

Urutan tag yang berbeda tidak menjadi masalah. Misalnya, tidak ada bedanya jika build_provider ditentukan setelah target_preparer . Alur pemanggilan pengujian dijalankan oleh harness itu sendiri, sehingga akan selalu memanggil mereka dalam urutan yang benar.

Urutan objek dengan tag yang sama memang penting . Misalnya, dua objek target_preparer yang ditentukan akan dipanggil sesuai urutan definisinya dalam XML. Penting untuk memahami hal ini karena dapat mengubah status akhir penyiapan perangkat. Misalnya, mem-flash lalu menginstal apk tidak akan sama dengan menginstal apk dan mem-flash karena mem-flash akan menghapus perangkat.