सबसे पहले 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 FrameworksCoreTests
परीक्षण चलाएँ:
एटेस्ट का उपयोग इस प्रकार करना सबसे आसान उपाय है:
atest FrameworksCoreTests
या अधिक जटिल परीक्षणों के लिए, ट्रेड फेडरेशन टेस्ट हार्नेस का उपयोग करें:
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
यदि ट्रेडफेड का उपयोग नहीं कर रहे हैं, तो मैन्युअल रूप से परीक्षण स्थापित करें और चलाएं:
- जेनरेट किया गया एपीके इंस्टॉल करें:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
युक्ति: आप अभी-अभी इंस्टॉल किए गए एपीके के अंदर इंस्ट्रुमेंटेशन खोजने के लिए
adb shell pm list instrumentation
का उपयोग करते हैंविभिन्न विकल्पों के साथ परीक्षण चलाएँ:
APK में सभी परीक्षण
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
एक विशिष्ट जावा पैकेज के तहत सभी परीक्षण
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
को कॉल कर सकता है। यह नोट करना महत्वपूर्ण है कि:
- मेट्रिक्स पूर्णांक या फ़्लोटिंग पॉइंट हो सकते हैं
- किसी भी गैर-संख्यात्मक मान को छोड़ दिया जाएगा
- आपका परीक्षण एपीके या तो कार्यात्मक परीक्षण या मीट्रिक परीक्षण हो सकता है, हालांकि दोनों को मिलाकर वर्तमान में समर्थित नहीं है