تتبع البنية العامة لتهيئة الوحدة نمطًا مشابهًا. إلى تهيئة 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>