इंस्ट्रुमेंटेशन टेस्ट

सबसे पहले, अपने ऐप्लिकेशन की जांच करें लेख पढ़ें developer.android.com पर. ध्यान रखें कि इसमें कुछ अंतर हैं प्लैटफ़ॉर्म टेस्टिंग में इंस्ट्रुमेंटेशन टेस्ट का इस्तेमाल कैसे किया जाता है.

सारांश में, इंस्ट्रुमेंटेशन टेस्ट एक खास टेस्ट एक्ज़ीक्यूशन देता है am instrument कमांड के ज़रिए लॉन्च किया गया एनवायरमेंट, जहां टारगेट किए गए ऐप्लिकेशन की प्रक्रिया को फिर से शुरू किया जाता है. इसके बाद, बुनियादी ऐप्लिकेशन के कॉन्टेक्स्ट के साथ शुरुआत की जाती है, और ऐप्लिकेशन प्रोसेस वीएम के अंदर इंस्ट्रुमेंटेशन थ्रेड शुरू हो जाता है. आपका टेस्ट कोड इस इंस्ट्रुमेंटेशन थ्रेड पर एक्ज़ीक्यूशन शुरू करता है और इसके साथ दिया जाता है Instrumentation इंस्टेंस, जो ऐप्लिकेशन के कॉन्टेक्स्ट का ऐक्सेस देता है और एपीआई का इस्तेमाल करें, ताकि टेस्ट के तहत ऐप्लिकेशन प्रोसेस में बदलाव किया जा सके.

खास कॉन्सेप्ट

  • इंस्ट्रुमेंटेशन का एलान किसी ऐप्लिकेशन पैकेज में किया जाना चाहिए. साथ ही, <instrumentation> टैग को ऐप्लिकेशन पैकेज मेनिफ़ेस्ट के <manifest> टैग के तहत नेस्ट किया गया है.
  • ऐप्लिकेशन पैकेज मेनिफ़ेस्ट में तकनीकी रूप से एक से ज़्यादा <instrumentation> टैग भी हैं, हालांकि आम तौर पर इसका इस्तेमाल इस तरह से नहीं किया जाता.
  • हर <instrumentation> में यह शामिल होना चाहिए:
    • एक android:name विशेषता: यह Instrumentation यह ऐप्लिकेशन, टेस्ट ऐप्लिकेशन में शामिल होता है. आम तौर पर, यह ऐप्लिकेशन इस्तेमाल किया जा रहा रनर. उदाहरण: android.support.test.runner.AndroidJUnitRunner
    • android:targetPackage एट्रिब्यूट तय करना ज़रूरी है. इसका मान यह होना चाहिए को परीक्षण के अंतर्गत ऐप्लिकेशन पैकेज पर सेट किया जाना चाहिए.

चरणों के बारे में खास जानकारी

  1. फ़्रेमवर्क सेवाओं के लिए हर्मेटिक टेस्ट के लिए, कुछ सामान्य डेस्टिनेशन यहां दिए गए हैं:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    अगर आप अपने कॉम्पोनेंट के लिए एक बिलकुल नया इंस्ट्रुमेंटेशन मॉड्यूल जोड़ रहे हैं, तो देखें

  2. अगर ऊपर बताई गई किसी जगह पर टेस्ट जोड़े जा रहे हैं, तो मौजूदा समझौते का पालन करें. अगर आपको नया टेस्ट मॉड्यूल सेट अप करना है, तो कृपया ऊपर बताई गई किसी एक जगह पर, AndroidManifest.xml और Android.mk के सेटअप का पालन करें

  3. यहां जाएं: फ़्रेमवर्क/बेस/कोर/टेस्ट/कोरटेस्ट/ देखें. ध्यान दें कि ये लाइनें अतिरिक्त ऐप्लिकेशन को इंस्टॉल करती हैं:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. अपने टेस्ट को @SmallTest, @MediumTest या @LargeTest

  5. m की मदद से टेस्ट मॉड्यूल बनाएं, उदाहरण:

    m FrameworksCoreTests
    
  6. टेस्ट करें:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. अगर Trefed का इस्तेमाल नहीं किया जा रहा है, तो मैन्युअल तरीके से टेस्ट इंस्टॉल करें और चलाएं:

    1. जनरेट किया गया apk इंस्टॉल करें:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. अलग-अलग विकल्पों के साथ टेस्ट करें:

      1. apk में मौजूद सभी टेस्ट

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. किसी विशिष्ट Java पैकेज के अंतर्गत सभी परीक्षण

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. किसी खास क्लास के तहत होने वाले सभी टेस्ट

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. टेस्ट करने का कोई खास तरीका

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

आपका टेस्ट, JUnit API का इस्तेमाल करके, पास या फ़ेल होने का साफ़ तौर पर दावा कर सकता है; इंच इसके अलावा, किसी गड़बड़ी की पहचान न हो पाने से भी सिस्टम काम करना बंद कर देगा.

परफ़ॉर्मेंस मेट्रिक का डेटा निकालने के लिए, आपका टेस्ट कोड Instrumentation#sendStatus की-वैल्यू पेयर की सूची भेजें. यह ध्यान रखना ज़रूरी है कि:

  1. मेट्रिक, पूर्णांक या फ़्लोटिंग पॉइंट हो सकती हैं
  2. ऐसी कोई भी वैल्यू खारिज कर दी जाएगी जो संख्याओं वाली न हो
  3. आपका टेस्ट APK या तो फ़ंक्शनल टेस्ट या मेट्रिक टेस्ट हो सकता है. हालांकि, फ़िलहाल, दोनों को शामिल करने की सुविधा काम नहीं करती