بنية AndroidTest.xml

تتبع البنية العامة لتهيئة الوحدة نمطًا مشابهًا. إلى تهيئة XML العادية، ولكن مع بعض القيود بسبب حقيقة إدارتها كجزء من مجموعة.

قائمة العلامات المسموح بها

لا يمكن أن يشتمل ضبط الوحدة AndroidTest.xml أو على نطاق أوسع إلا على علامات XML التالية: target_preparer وmulti_target_preparer وtest metrics_collector

على الرغم من أن هذه القائمة تبدو مقيدة، إلا أنها تسمح لك بتحديد لإعداد وحدة الاختبار واختباره للتشغيل.

ملاحظة: يُرجى الاطّلاع على إعدادات XML التجريبية. إذا كنت بحاجة إلى تنشيط للذاكرة حول العلامات المختلفة.

عناصر مثل build_provider أو result_reporter سترفع ConfigurationException في حال محاولة التشغيل من داخل وحدة التكوين. ويهدف هذا إلى تجنب توقع حدوث هذه الكائنات تؤدي بالفعل بعض المهام من داخل وحدة ما.

مثال على ضبط الوحدة

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

تصف هذه الإعدادات اختبارًا يتطلّب CtsGestureTestCases.apk وسيتم تثبيت الأداة مقابل android.gesture.cts طرد.

علامتا التضمين <include> و<template-include>

استخدام <include> و<template-include> في إعدادات الوحدة هو يشعر بالإحباط. ليس مضمونًا أن تعمل على النحو المتوقع.

حالة خاصة لعلامة Metrics_collector

ويُسمح باستخدام metrics_collector، ولكنه يقتصر على FilePullerLogCollector من أجل تحديد ملف أو دليل معين ليتم سحبه وتسجيله الوحدة. ويكون هذا الأمر مفيدًا إذا كنت تترك السجلات في موقع معين تريد استردادها تلقائيًا.

مثال على الضبط:

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

ماذا عن معلومات الإصدار أو عمليات التنزيل؟

قد يعطي تعريف العلامات المسموح بها انطباعًا غير صحيح بأن على أي معلومات إصدار. هذا غير صحيح.

يتم توفير معلومات الإصدار من عملية الإعداد على مستوى الحزمة وسيتم أن تتشاركها جميع وحدات الحزمة يتيح ذلك إجراء إعداد واحد على مستوى أعلى. للحزمة من أجل تشغيل جميع الوحدات في الحزمة.

على سبيل المثال، بدلاً من كل مجموعة أدوات اختبار التوافق (CTS) استعلامًا فرديًا عن معلومات الجهاز وأنواعه وما إلى ذلك، CTS (cts.xml) على مستوى الحزمة مرة واحدة، وستتلقّى كل وحدة المعلومات إذا طلبوها.

ومن أجل أن تتلقى الكائنات الموجودة في الوحدة معلومات الإصدار، تحتاج إلى لفعل الشيء نفسه كما هو الحال في تهيئة Tradefed العادية: نفِّذ IBuildReceiver للحصول على واجهة IBuildInfo. عرض إجراء الاختبارات باستخدام الجهاز لمزيد من التفاصيل.

حقول البيانات الوصفية

يتضمّن عدد كبير من وحدات الاختبار بعض مواصفات "metadata"، لكل منها هدف فريد.

مثال:

  <option name="config-descriptor:metadata" key="component" value="framework" />
  <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
  <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
  <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />

المكوّن

تصف البيانات الوصفية component مكوّن Android العام الذي تتضمّنه الوحدة. يهدف إلى الاختبار. ليس لها أيّ تأثير مباشر على تنفيذ الاختبار CANNOT TRANSLATE تُستخدم في المقام الأول للأغراض التنظيمية.

تتوفّر أحدث قائمة بالمكوّنات المسموح بها لـ CTS في CtsConfigLoadingTest. يتعذّر هذا الاختبار عند الإرسال المسبق في حال إضافة مكوِّن غير موجود إلى CTS.

يمكنك تصفية مجموعة يتم تشغيلها بناءً على المكونات التي تستخدم "module-metadata-include-filter" وmodule-metadata-exclude-filter"

مثال:

  --module-metadata-include-filter component framework

لا يتيح هذا المثال تشغيل وحدة الاختبار إلا تلك التي تحتوي على تعليقات توضيحية باستخدام framework. المكون.

المَعلمة

توفّر بيانات parameter الوصفية معلوماتية وتؤثّر في الاختبار. والتنفيذ. تحدّد هذه السياسة وضع Android الذي تنطبق عليه وحدة الاختبار. في هذه الحالة، تقتصر الأوضاع على أوضاع Android العالية المستوى، مثل instant apps أو secondary users أو different abis

وأثناء تشغيل الحزمة، إذا كان الوضع ينطبق على الاختبار، فإن العديد من من وحدة الاختبار بناءً على الوضع. يتم تشغيل كل شكل مختلف اختبارات مماثلة ولكن ضمن أوضاع مختلفة.

  • instant_app: إنشاء نسخة مختلفة من الاختبارات التي تثبت حِزم APK كـ بشكل فوري.
  • multi_abi: إنشاء صيغ مختلفة من الاختبارات لكل واجهة تطبيق ثنائية (ABI) متوافقة مع الخاص بك.
  • secondary_user: إنشاء نسخة مختلفة من الاختبارات التي تثبت حِزم APK إجراء اختبارات كمستخدم ثانوي.

جمع المقاييس والمعالجة اللاحقة لوحدات اختبار الأداء

بالنسبة إلى وحدات اختبار الأداء، يمكن استخدام metrics_collector على مستوى الوحدة يُسمح باستخدام metric_post_processor لأنّها ضرورية لاختبارات الأداء. يمكن أن تكون مُجمِّعات المقاييس على مستوى الوحدة والمعالجات اللاحقة على مستوى الوحدة خاصة. لا يوصى بتحديد معالجات ما بعد المعالجة على مستوى أعلى مستوى الوحدة.

يجب أن تتضمّن إعدادات وحدة اختبار الأداء البيانات الوصفية للسمة test-type ذات القيمة performance، مثل: xml <option name="config-descriptor:metadata" key="test-type" value="performance" /> بدون ذلك، إذا كان الإعداد التجريبي يتضمّن metric_collector، بدلًا من ذلك FilePullerLogCollector أو أي metric_post_processor، الاختبار إخفاق في الإرسال المسبق.

مثال على ضبط وحدة اختبار الأداء:

<configuration description="Runs sample performance test.">
    <!-- Declare as a performance test module -->
    <option name="config-descriptor:metadata" key="test-type" value="performance" />
    <option name="test-tag" value="hello-world-performance-test" />
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
    </test>
    <!-- Add module-level post processor MetricFilePostProcessor -->
    <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
        <option name="aggregate-similar-tests" value="true" />
        <option name="enable-per-test-log" value="false" />
    </metric_post_processor>
</configuration>