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

सबसे पहले पढ़ टेस्ट अपने अनुप्रयोग developer.android.com पर। ध्यान दें कि प्लेटफ़ॉर्म टेस्टिंग में इंस्ट्रूमेंटेशन टेस्ट का उपयोग कैसे किया जाता है, इसमें कुछ अंतर हैं।

सारांश में, एक उपकरण परीक्षण के रूप में के माध्यम से शुरू की एक विशेष परीक्षा निष्पादन वातावरण प्रदान करता है am instrument आदेश है, जहां लक्षित आवेदन प्रक्रिया को पुनः आरंभ और बुनियादी आवेदन संदर्भ के साथ आरंभ नहीं हो जाता है, और एक उपकरण धागा आवेदन प्रक्रिया वी एम के अंदर शुरू कर दिया है। आपका परीक्षण कोड इस उपकरण धागे पर निष्पादन शुरू होता है और एक साथ प्रदान की जाती है Instrumentation उदाहरण है कि परीक्षण के अंतर्गत आवेदन प्रक्रिया में हेरफेर करने के आवेदन के संदर्भ और API तक पहुंच प्रदान करता है।

महत्वपूर्ण अवधारणाएं

  • एक उपकरण एक साथ, एक आवेदन पैकेज में घोषित किया जाना चाहिए <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. देखें चौखटे / आधार / कोर / परीक्षण / coretests / एक उदाहरण के लिए। ध्यान दें कि ये लाइनें अतिरिक्त ऐप्स इंस्टॉल करती हैं:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. मत भूलना के रूप में अपने परीक्षण चिह्नित करने के लिए @SmallTest , @MediumTest या @LargeTest

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

    m FrameworksCoreTests
    
  6. परीक्षण चलाएँ:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. यदि ट्रेडफेड का उपयोग नहीं कर रहे हैं, तो मैन्युअल रूप से परीक्षण स्थापित करें और चलाएं:

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

    युक्ति: यदि आप का उपयोग adb shell pm list instrumentation apk अभी स्थापित अंदर इंस्ट्रुमेन्टेशन्स को खोजने के लिए

    1. विभिन्न विकल्पों के साथ परीक्षण चलाएँ:

      1. APK में सभी परीक्षण

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

        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 एपीआई; इसके अलावा, कोई भी न आया हुआ अपवाद भी कार्यात्मक विफलता का कारण होगा।

प्रदर्शन मेट्रिक्स का उत्सर्जन करने के लिए, अपने परीक्षण कोड कॉल कर सकते हैं Instrumentation#sendStatus कुंजी-मान जोड़ों की एक सूची भेजने के लिए। यह नोट करना महत्वपूर्ण है कि:

  1. मेट्रिक्स पूर्णांक या फ़्लोटिंग पॉइंट हो सकते हैं
  2. किसी भी गैर-संख्यात्मक मान को छोड़ दिया जाएगा
  3. आपका परीक्षण एपीके या तो कार्यात्मक परीक्षण या मीट्रिक परीक्षण हो सकता है, हालांकि दोनों को मिलाकर वर्तमान में समर्थित नहीं है