هيكل عالي المستوى لتكوين 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 classpath عند التشغيل، فسيتم العثور عليه وحله.

أوامر الكائنات Tradefed

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

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