أولاً، تأكَّد من فهم معالجة الخيارات في Tradefed.
يصف إعداد الحزمة الطبقتين اللتين تتوفّرَان في بنية الحزمة:
- مجموعة المستويات العليا
- الوحدات
في سياق Tradefed غير المرتبط بالحزمة، لا داعي للقلق بشأن ذلك، لأنّ كل خيار يؤدي إلى الاستدعاء الكامل. في سياق مجموعة، يتم إبقاء الوحدات معزولة عن المجموعة، لذا لا تتوفّر جميع الخيارات على مستوى الوحدات.
تمرير الخيارات إلى الحزمة ذات المستوى الأعلى
تعمل مجموعة المستوى الأعلى مثل إعدادات Tradefed القياسية: حيث تتلقّى الإعداد الكامل، بما في ذلك برنامج تشغيل الحزمة، جميع الخيارات مثل الإعداد "مقايضة" غير الجناح.
تمرير الخيارات إلى الوحدات
لا تتلقّى الوحدات تلقائيًا أيًا من الخيارات التي يتم تمريرها إلى الأمر.
ويجب استهدافهم بشكل صريح لتلقّي الخيارات من خلال خيار
module-arg
. ويؤدي عزل خيارات الوحدات إلى تسهيل تصحيح الأخطاء.
مثال:
cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>
cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true
يضمن بناء الجملة أن الوحدة المستهدفة ستتلقى الخيار المحدد.
هناك طرق إضافية لتمرير الخيارات إلى الوحدات، مثل test-arg
، التي تسمح لك بتمرير الخيارات إلى مشغّل الاختبار لكل وحدة استنادًا إلى نوعه أو صفته.
مثال:
cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>
cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true
لا تستهدف البنية وحدة معيّنة، بل تستهدف جميع مشغّلي الاختبار
للصفّ المحدّد. لا تأخذ test-arg
في الاعتبار سوى عمليات تنفيذ
IRemoteTest
كمستقبل محتمل للخيارات.
تمرير الخيارات إلى فئة اختبار Java في java_test_host
في حال إضافة @Option
إلى فئة اختبار java كجزء من هدف إنشاء
java_test_host، عليك استخدام ما يلي لإدخال
هذا الخيار:
cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>
set-option في هذا السياق هو خيار أداة HostTest runner من مجموعة أدوات الاختبار التي تلفّ فئات Java لتنفيذها.
إذا كان هدف ملف jar للخيارات يحتوي على فئات اختبار متعددة، فمن المتوقع بشكل تلقائي تحديد الخيار @option أو استخدام بناء الجملة التالي لاستهداف فئة واحدة:
cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>
تمرير الفلاتر إلى المجموعة
لفلترة بعض الاختبارات من مجموعة، نستخدم --include-filter
و
--exclude-filter
لإجبار تضمين اختبار معين
أو وحدة معيّنة أو استبعادهما على التوالي. يكون الاستبعاد له الأولوية.
يستخدمون التنسيق التالي: [abi] <module-name> [test name]
أمثلة:
--include-filter CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases
--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes