بنية عالية المستوى لإعدادات 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 التجاري الشامل بعلامات <configuration>. يتم تحديد Tradefed objects في العلامات الخاصة به، مثل: build_provider أو target_preparer وtest وغيرهما. وقد تم توضيح أغراضهما الفردية في المزيد من التفاصيل. التفاصيل في بنية التطبيق .

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

طلبات عناصر Tradefed

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

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