Tradefed XML yapılandırmasının üst düzey yapısı

Tradefed yapılandırmaları, çalıştırılacak testi ve yapılacak hazırlık/kurulum adımlarını açıklamak için XML yapısını izler.

Teorik olarak, tek bir komut için XML'de her şey tanımlanabilir. Ancak pratikte, temel şablon XML dosyalarına sahip olmak ve bunları ek komut satırı parametreleriyle özelleştirmek daha pratiktir.

Yapı

<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>

Genel Tradefed XML'i <configuration> etiketleriyle ayrılır. Tradefed objects kendi etiketlerinde tanımlanır (ör. build_provider, target_preparer, test vb.). Bu etiketlerin ayrı ayrı amaçları Mimari bölümünde daha ayrıntılı olarak açıklanmaktadır.

Her nesnenin, class= içinde tanımlanan nesneyle ilişkili ve çalışma zamanında çözülen bir Java sınıfı vardır. Dolayısıyla, sınıfı içeren JAR dosyası çalıştırıldığında Tradefed Java sınıf yolu üzerinde olduğu sürece sınıf bulunur ve çözülür.

Tradefed nesnelerinin siparişleri

Farklı etiketlerin sırası önemli değildir. Örneğin, build_provider'ün target_preparer'ten sonra belirtilmesi bir fark yaratmaz. Test çağrısının akışı, koşum takımı tarafından zorunlu kılındığından her zaman doğru sırada çağrılır.

Aynı etikete sahip nesnelerin sırası önemlidir. Örneğin, tanımlanan iki target_preparer nesnesi, XML'de tanımlanma sırasına göre çağrılır. Cihaz kurulumunun son durumunu değiştirebileceği için bunu anlamak önemlidir. Örneğin, önce flaşlama, ardından APK yükleme işlemi, flaşlama işlemi cihazı temizleyeceği için önce APK yükleme, ardından flaşlama işlemiyle aynı olmaz.