सबसे पहले, पक्का करें कि आपको 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
(documentation, source code) या ITargetPreparer (documentation,
source code) के लागू किए गए वर्शन को मानता है.
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