ساختار سطح بالا پیکربندی 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 Tradefed توسط تگ‌های <configuration> محدود شده است. Tradefed objects در تگ‌های مخصوص به خود تعریف می‌شوند، برای مثال: build_provider ، target_preparer ، test و غیره. اهداف جداگانه آنها با جزئیات بیشتر در بخش معماری توضیح داده شده است.

هر شیء دارای کلاس جاوا مرتبط با شیء تعریف شده در class= است که در زمان اجرا حل می‌شود؛ بنابراین تا زمانی که فایل JAR حاوی کلاس در مسیر کلاس Tradefed Java هنگام اجرا باشد، پیدا و حل خواهد شد.

سفارش‌های اشیاء Tradefed

ترتیب تگ‌های مختلف مهم نیست. برای مثال، فرقی نمی‌کند که build_provider بعد از target_preparer مشخص شود. جریان فراخوانی تست توسط خودِ Harness اعمال می‌شود، بنابراین همیشه آنها را به ترتیب صحیح فراخوانی می‌کند.

ترتیب اشیاء با برچسب یکسان مهم است . برای مثال، دو شیء target_preparer تعریف شده به ترتیب تعریف خود در XML فراخوانی می‌شوند. درک این موضوع مهم است زیرا می‌تواند وضعیت نهایی راه‌اندازی دستگاه را تغییر دهد. برای مثال، فلش کردن و سپس نصب apk با نصب apk و فلش کردن یکسان نیست زیرا فلش کردن باعث پاک شدن اطلاعات دستگاه می‌شود.