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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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