सबसे पहले, पक्का करें कि आपको 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_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