कुछ टेस्ट मॉड्यूल के लिए, पसंद के मुताबिक सेटअप और टियर डाउन करने के ऐसे चरणों की ज़रूरत पड़ सकती है जिन्हें टेस्ट केस में ही पूरा नहीं किया जा सकता. इसके कुछ उदाहरणों में ये शामिल हैं:
- टेस्ट APK के अलावा, अन्य APK इंस्टॉल करना
- डिवाइस पर कुछ फ़ाइलें पुश करें
- निर्देश चलाना (उदाहरण के लिए, adb shell pm ...)
पहले, कॉम्पोनेंट टीमें आम तौर पर ऐसे टास्क को पूरा करने के लिए, होस्ट साइड टेस्ट लिखती थीं. इसके लिए, उन्हें Trade Federation harness को समझना पड़ता था. साथ ही, आम तौर पर टेस्ट मॉड्यूल की जटिलता भी बढ़ जाती थी.
सीटीएस से लेते हुए, हमने ऊपर दिए गए सामान्य कामों की सूची को कुछ ही लाइनों में पूरा किया जा सकता है कॉन्फ़िगरेशन. ज़्यादा सुविधाओं के लिए, ITargetPreparer या ITargetCleaner के मुताबिक, अपना टारगेट तैयार करने वाला टूल भी लागू किया जा सकता है. साथ ही, अपने टेस्ट मॉड्यूल कॉन्फ़िगरेशन में इस्तेमाल करने के लिए, उन्हें कॉन्फ़िगर किया जा सकता है.
टेस्ट मॉड्यूल के लिए, टेस्ट मॉड्यूल कॉन्फ़िगरेशन के लिए सबसे ऊपर ज़रूरी एक्सएमएल फ़ाइल जोड़नी होती है लेवल मॉड्यूल सोर्स फ़ोल्डर, जिसका नाम ‘AndroidTest.xml’ है. एक्सएमएल इस फ़ॉर्मैट का पालन करता है का इस्तेमाल एक कॉन्फ़िगरेशन फ़ाइल के रूप में किया गया है. फ़िलहाल, टेस्ट मॉड्यूल कॉन्फ़िगरेशन की मदद से मैनेज किए जाने वाले मुख्य टैग, “target_preparer” और "test" टैग हैं.
टैक्स भरने वाले लोगों को टारगेट करना
जैसा कि नाम से ही पता चलता है, “target_preparer” टैग से टारगेट तैयार करने वाला टूल तय होता है (ITargetCampaignr देखें) जो सेटअप का तरीका उपलब्ध कराता है. इसे टेस्ट मॉड्यूल के एक्ज़ीक्यूट करने से पहले कॉल किया जाता है टेस्ट करने के लिए; और अगर “target_preparer” टैग में दी गई क्लास भी शामिल है implements ITargetTargeter, परीक्षण मॉड्यूल के खत्म हो जाने के बाद इसकी टियरडाउन विधि शुरू की जाएगी.
बिल्ट-इन कॉमन मॉड्यूल कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, ‘AndroidTest.xml’ नाम की नई फ़ाइल यहां जोड़ें आपके टेस्ट मॉड्यूल के लिए टॉप लेवल फ़ोल्डर को अपलोड कर सकता है और उसे यहां दिए गए एलिमेंट से भर सकता है सामग्री:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
एक उदाहरण के रूप में, हम निम्न विकल्प टैग जोड़ सकते हैं (“insert” टिप्पणी में ऊपर दिया गया है):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
ये विकल्प, टेस्ट हार्नेस को इनके लिए कॉन्फ़िगर करेंगे:
- टेस्ट मॉड्यूल शुरू करने से पहले, शेल कमांड “सेटिंग सुरक्षित रखें डिवाइस पर Accessibility_enabled 1”
- टेस्ट मॉड्यूल के पूरा होने के बाद, शेल कमांड “सेटिंग सुरक्षित रखें Accessibility_enabled 0”
इस उदाहरण में, टेस्ट मॉड्यूल के चालू होने से पहले/बाद, सुलभता मोड को चालू/बंद किया गया है. एक आसान उदाहरण के साथ दिखाया गया है कि “option” टैग का इस्तेमाल कैसे किया जाता है. इस बारे में ज़्यादा जानकारी देना ज़रूरी है. जैसा कि ऊपर दिखाया गया है, टैग में दो विशेषताएं हो सकती हैं: नाम, मान. name एट्रिब्यूट में, प्रॉडक्ट की जानकारी तैयार करने वाले व्यक्ति या कंपनी के दिए गए विकल्पों में से किसी एक का नाम होना चाहिए.
वैल्यू फ़ील्ड का असल मकसद इस बात पर निर्भर करता है कि डेटा तैयार करने वाले व्यक्ति ने विकल्प को कैसे तय किया है: यह स्ट्रिंग, संख्या, बूलियन या फ़ाइल पाथ हो सकता है. यहां टारगेट तैयार करने वाले तीन सामान्य टूल के बारे में खास जानकारी दी गई है:
क्लास का नाम: PushFilePreparer
- छोटा नाम: push-file
- फ़ंक्शन: डिवाइस पर मौजूद डेस्टिनेशन में, टेस्ट केस फ़ोल्डर में मौजूद किसी भी फ़ाइल को पुश करता है
- ध्यान दें:
- यह तैयार करने वाला टूल एक फ़ोल्डर से दूसरे फ़ोल्डर में या फ़ाइल को एक फ़ाइल से दूसरे फ़ोल्डर में ले जा सकता है; वह का मतलब है कि आप डिवाइस के किसी फ़ोल्डर में फ़ाइल नहीं पुश कर सकते: उस फ़ोल्डर के तहत गंतव्य फ़ाइल नाम भी दर्ज करें
- विकल्प:
- पुश-फ़ाइल: पुश-स्पेक्ट, जिसमें पाथ में लोकल फ़ाइल शामिल होती है जहां उसे डिवाइस में पुश किया जाना चाहिए. दोहराया जा सकता है. अगर एक ही रिमोट पाथ पर कई फ़ाइलों को पुश करने के लिए कॉन्फ़िगर किया गया है, तो सबसे नई फ़ाइल को पुश किया जाएगा.
- push: (अब काम नहीं करता) यह एक पुश-स्पेसिफ़िकेशन है, जिसे '
/path/to/srcfile.txt->/path/to/destfile.txt
' या '/path/to/srcfile.txt->/path/to/destdir/
' के तौर पर फ़ॉर्मैट किया गया है. इसे दोहराया जा सकता है. यह पाथ, टेस्ट मॉड्यूल डायरेक्ट्री या खुद out डायरेक्ट्री से जुड़ा हो सकता है. - post-push: सभी पुश को पूरा कर लेने के बाद डिवाइस पर (`
adb shell <your command>
` के साथ) चलाने का निर्देश. सामान्य इस्तेमाल केस, अनुमतियों के लिए chmod का इस्तेमाल करेगा
क्लास का नाम: InstallApkSetup
- छोटा नाम:install-apk
- फ़ंक्शन: आर्बिट्रेरी apk फ़ाइलों को गंतव्य चालू में पुश करता है डिवाइस
- विकल्प:
- test-file-name: उस apk का नाम जिस पर इंस्टॉल किया जाना है डिवाइस.
- install-arg: pm install कमांड में पास किए जाने वाले अतिरिक्त आर्ग्युमेंट. इनमें शुरुआत में डैश भी शामिल है, जैसे कि “-d". दोहराया जा सकता है
क्लास का नाम: RunCommandTargetAvailabler
- छोटा नाम: run-command
- फ़ंक्शन: जांच से पहले या बाद में आर्बिट्रेरी शेल कमांड एक्ज़ीक्यूट करता है मॉड्यूल एक्ज़ीक्यूशन
- विकल्प:
- run-command:adb शेल कमांड चलाने के लिए. दोहराया जा सकता है
- teardown-command:डिवाइस हटाने के दौरान चलाया जाने वाला adb shell कमांड. दोहराया जा सकता है
टेस्ट क्लास
टेस्ट क्लास, ट्रेड फ़ेडरेशन क्लास होती है. इसका इस्तेमाल टेस्ट करने के लिए किया जाता है.
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
यहां तीन सामान्य टेस्ट क्लास दी गई हैं:
क्लास का नाम: GTest
- छोटा नाम: gtest
- फ़ंक्शन: ऐसा टेस्ट जो दिए गए डिवाइस पर नेटिव टेस्ट पैकेज चलाता है.
- विकल्प:
- native-test-device-path:डिवाइस पर मौजूद वह पाथ जहां नेटिव टेस्ट मौजूद हैं.
क्लास का नाम: इंस्ट्रुमेंटेशनटेस्ट
- छोटा नाम: इंस्ट्रूमेंटेशन
- फ़ंक्शन: यह एक ऐसा टेस्ट है जो दिए गए डिवाइस पर इंस्ट्रूमेंटेशन टेस्ट पैकेज चलाता है
- विकल्प:
- पैकेज: चलने वाले Android टेस्ट ऐप्लिकेशन के मेनिफ़ेस्ट पैकेज का नाम.
- class: चलाने के लिए टेस्ट क्लास का नाम.
- method:टेस्ट करने के लिए इस्तेमाल किए जाने वाले तरीके का नाम.
क्लास का नाम: AndroidJUnitTest
- फ़ंक्शन: ऐसा टेस्ट जो दिए गए यूआरएल पर इंस्ट्रुमेंटेशन टेस्ट पैकेज चलाता है वह डिवाइस जो android.support.test.Runner.AndroidJUnitRunner का इस्तेमाल करता हो यह किसी इंस्ट्रुमेंटेशन टेस्ट को लागू करने का मुख्य तरीका है.