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

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

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

  • टॉप-लेवल का सूट
  • मॉड्यूल

सूट के अलावा, 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_test_host में, Java टेस्ट क्लास में विकल्प पास करना

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

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

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

अगर विकल्पों के लिए आपकी जार फ़ाइल के टारगेट में कई टेस्ट क्लास हैं, तो डिफ़ॉल्ट रूप से, उन सभी में @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