सबसे पहले, अपने ऐप्लिकेशन की जांच करें लेख पढ़ें developer.android.com पर. ध्यान रखें कि इसमें कुछ अंतर हैं प्लैटफ़ॉर्म टेस्टिंग में इंस्ट्रुमेंटेशन टेस्ट का इस्तेमाल कैसे किया जाता है.
सारांश में, इंस्ट्रुमेंटेशन टेस्ट एक खास टेस्ट एक्ज़ीक्यूशन देता है
am instrument
कमांड के ज़रिए लॉन्च किया गया एनवायरमेंट, जहां टारगेट किए गए
ऐप्लिकेशन की प्रक्रिया को फिर से शुरू किया जाता है. इसके बाद, बुनियादी ऐप्लिकेशन के कॉन्टेक्स्ट के साथ शुरुआत की जाती है,
और ऐप्लिकेशन प्रोसेस वीएम के अंदर इंस्ट्रुमेंटेशन थ्रेड शुरू हो जाता है. आपका
टेस्ट कोड इस इंस्ट्रुमेंटेशन थ्रेड पर एक्ज़ीक्यूशन शुरू करता है और इसके साथ दिया जाता है
Instrumentation
इंस्टेंस, जो ऐप्लिकेशन के कॉन्टेक्स्ट का ऐक्सेस देता है
और एपीआई का इस्तेमाल करें, ताकि टेस्ट के तहत ऐप्लिकेशन प्रोसेस में बदलाव किया जा सके.
खास कॉन्सेप्ट
- इंस्ट्रुमेंटेशन का एलान किसी ऐप्लिकेशन पैकेज में किया जाना चाहिए. साथ ही,
<instrumentation>
टैग को ऐप्लिकेशन पैकेज मेनिफ़ेस्ट के<manifest>
टैग के तहत नेस्ट किया गया है. - ऐप्लिकेशन पैकेज मेनिफ़ेस्ट में तकनीकी रूप से एक से ज़्यादा
<instrumentation>
टैग भी हैं, हालांकि आम तौर पर इसका इस्तेमाल इस तरह से नहीं किया जाता. - हर
<instrumentation>
में यह शामिल होना चाहिए:- एक
android:name
विशेषता: यहInstrumentation
यह ऐप्लिकेशन, टेस्ट ऐप्लिकेशन में शामिल होता है. आम तौर पर, यह ऐप्लिकेशन इस्तेमाल किया जा रहा रनर. उदाहरण:android.support.test.runner.AndroidJUnitRunner
android:targetPackage
एट्रिब्यूट तय करना ज़रूरी है. इसका मान यह होना चाहिए को परीक्षण के अंतर्गत ऐप्लिकेशन पैकेज पर सेट किया जाना चाहिए.
- एक
चरणों के बारे में खास जानकारी
फ़्रेमवर्क सेवाओं के लिए हर्मेटिक टेस्ट के लिए, कुछ सामान्य डेस्टिनेशन यहां दिए गए हैं:
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
अगर आप अपने कॉम्पोनेंट के लिए एक बिलकुल नया इंस्ट्रुमेंटेशन मॉड्यूल जोड़ रहे हैं, तो देखें
अगर ऊपर बताई गई किसी जगह पर टेस्ट जोड़े जा रहे हैं, तो मौजूदा समझौते का पालन करें. अगर आपको नया टेस्ट मॉड्यूल सेट अप करना है, तो कृपया ऊपर बताई गई किसी एक जगह पर,
AndroidManifest.xml
औरAndroid.mk
के सेटअप का पालन करेंयहां जाएं: फ़्रेमवर्क/बेस/कोर/टेस्ट/कोरटेस्ट/ देखें. ध्यान दें कि ये लाइनें अतिरिक्त ऐप्लिकेशन को इंस्टॉल करती हैं:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
अपने टेस्ट को
@SmallTest
,@MediumTest
या@LargeTest
m की मदद से टेस्ट मॉड्यूल बनाएं, उदाहरण:
m FrameworksCoreTests
टेस्ट करें:
सबसे आसान समाधान है कि आप इस तरह से एटेस्ट करें:
atest FrameworksCoreTests
या ज़्यादा मुश्किल टेस्ट के लिए, ट्रेड फ़ेडरेशन का टेस्ट हार्नेस:
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
अगर Trefed का इस्तेमाल नहीं किया जा रहा है, तो मैन्युअल तरीके से टेस्ट इंस्टॉल करें और चलाएं:
- जनरेट किया गया apk इंस्टॉल करें:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
अलग-अलग विकल्पों के साथ टेस्ट करें:
apk में मौजूद सभी टेस्ट
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
किसी विशिष्ट Java पैकेज के अंतर्गत सभी परीक्षण
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
किसी खास क्लास के तहत होने वाले सभी टेस्ट
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
टेस्ट करने का कोई खास तरीका
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
आपका टेस्ट, JUnit
API का इस्तेमाल करके, पास या फ़ेल होने का साफ़ तौर पर दावा कर सकता है; इंच
इसके अलावा, किसी गड़बड़ी की पहचान न हो पाने से भी सिस्टम काम करना बंद कर देगा.
परफ़ॉर्मेंस मेट्रिक का डेटा निकालने के लिए, आपका टेस्ट कोड
Instrumentation#sendStatus
की-वैल्यू पेयर की सूची भेजें. यह ध्यान रखना ज़रूरी है कि:
- मेट्रिक, पूर्णांक या फ़्लोटिंग पॉइंट हो सकती हैं
- ऐसी कोई भी वैल्यू खारिज कर दी जाएगी जो संख्याओं वाली न हो
- आपका टेस्ट APK या तो फ़ंक्शनल टेस्ट या मेट्रिक टेस्ट हो सकता है. हालांकि, फ़िलहाल, दोनों को शामिल करने की सुविधा काम नहीं करती