أولاً، تأكَّد من فهم معالجة الخيارات في Tradefed.
يصف إعداد الحزمة الطبقتين اللتين تتوفّرَان في بنية الحزمة:
- مجموعة المستويات العليا
- الوحدات
في سياق 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