تمرير الخيارات والفلاتر إلى الحزمة والوحدات

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

تمرير خيارات إلى فئة اختبار 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 من حزمة الاختبار التي تغلف فئات 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