بنية عالية المستوى لإعداد 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>

يتم تحديد ملف XML العام في Tradefed باستخدام علامات <configuration>. يتم تحديد Tradefed objects في علامات خاصة بها، مثل: build_provider وtarget_preparer وtest وما إلى ذلك. ويمكن الاطّلاع على أغراضها الفردية بمزيد من التفصيل في قسم البنية.

يحتوي كل عنصر على فئة Java المرتبطة بالعنصر المحدّد في class= التي يتم حلّها أثناء التشغيل، لذلك ما دام ملف JAR الذي يحتوي على الفئة في مسار فئة Java في Tradefed عند التشغيل، سيتم العثور عليه وحلّه.

طلبات عناصر Tradefed

ولا يهمّ ترتيب العلامات المختلفة. مثلاً، لا يحدث أي فرق إذا تم تحديد build_provider بعد target_preparer. يتم فرض مسار الاستدعاء الاختباري من خلال النظام نفسه، لذا سيتم استدعاؤه دائمًا بالترتيب الصحيح.

يُعدّ ترتيب العناصر التي تحمل العلامة نفسها مهمًا. على سبيل المثال، سيتمّ استدعاء عنصرَين target_preparer محدّدَين بترتيب تحديدهما في ملف XML. من المهم معرفة ذلك لأنه قد يغيِّر الحالة النهائية لإعداد الجهاز. على سبيل المثال، لا يُعدّ تثبيت ملف APK ثم فلاش الجهاز مماثلاً لتثبيت ملف APK ثم فلاش الجهاز لأنّ عملية الفلاش ستؤدي إلى محو بيانات الجهاز.