सुइट और मॉड्यूल के लिए विकल्प और फ़िल्टर पास करें

सबसे पहले, पक्का करें कि आपको Tradefed में विकल्प मैनेज करने के बारे में पता हो.

Suite सेटअप, सुइट की संरचना में मौजूद दो लेयर के बारे में जानकारी देता है:

  • टॉप-लेवल सुइट
  • मॉड्यूल

कारोबार में सुइट न होने पर, आपको इसके बारे में सोचने की ज़रूरत नहीं है. हर विकल्प को शुरू करने के लिए कहा जाता है. सुइट के हिसाब से, मॉड्यूल को सुइट से अलग रखा जाता है. इसलिए, उनके लेवल पर सभी विकल्प उपलब्ध नहीं होते.

टॉप-लेवल सुइट के विकल्प पास करें

टॉप-लेवल का सुइट, स्टैंडर्ड 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_test_host में Java टेस्ट क्लास को विकल्प पास करना

अगर java_test_host बिल्ड टारगेट के हिस्से के तौर पर, अपनी java टेस्ट क्लास में @Option जोड़ा जा रहा है, तो उस विकल्प को इंजेक्ट करने के लिए, आपको इनका इस्तेमाल करना होगा:

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

set-option इस संदर्भ में होस्ट टेस्ट रनर का विकल्प है, जो टेस्ट हार्नेस से मिलता है. यह आपकी JavaScript क्लास को एक्ज़ीक्यूट करने के लिए रैप करता है.

अगर विकल्पों के लिए आपकी 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