जटिल परीक्षण विन्यास

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

कुछ परीक्षण मॉड्यूल को अनुकूलित सेटअप की आवश्यकता हो सकती है और उन चरणों को फाड़ सकते हैं जिन्हें परीक्षण मामले में ही नहीं किया जा सकता है। विशिष्ट उदाहरणों में शामिल हो सकते हैं:

  • अन्य एपीके स्थापित करें (परीक्षण एपीके के अतिरिक्त)
  • कुछ फ़ाइलों को डिवाइस पर पुश करें
  • कमांड चलाएँ (जैसे adb shell pm ...)

अतीत में, घटक दल आमतौर पर ऐसे कार्यों को करने के लिए एक मेजबान पक्ष परीक्षण लिखने का सहारा लेते हैं, जिसके लिए ट्रेड फेडरेशन हार्नेस की समझ की आवश्यकता होती है और आमतौर पर एक परीक्षण मॉड्यूल की जटिलता बढ़ जाती है।

सीटीएस से उधार लेते हुए, हमने ऐसे कार्यों का समर्थन करने के लिए परीक्षण मॉड्यूल कॉन्फ़िगरेशन की अवधारणा पेश की, उपरोक्त सामान्य कार्यों की सूची को कॉन्फ़िगरेशन की कुछ पंक्तियों द्वारा प्राप्त किया जा सकता है। अधिकतम लचीलेपन के लिए, आप अपने स्वयं के लक्ष्य तैयारकर्ता को भी लागू कर सकते हैं, जैसा कि ITargetPreparer या ITargetCleaner द्वारा परिभाषित किया गया है, और उन्हें अपने स्वयं के परीक्षण मॉड्यूल कॉन्फ़िगरेशन में उपयोग करने के लिए कॉन्फ़िगर करें।

परीक्षण मॉड्यूल के लिए एक परीक्षण मॉड्यूल कॉन्फ़िगरेशन एक आवश्यक XML फ़ाइल है जिसे 'AndroidTest.xml' नाम के शीर्ष स्तर मॉड्यूल स्रोत फ़ोल्डर में जोड़ा जाता है। एक्सएमएल ट्रेड फेडरेशन टेस्ट ऑटोमेशन हार्नेस द्वारा उपयोग की जाने वाली कॉन्फ़िगरेशन फ़ाइल के प्रारूप का अनुसरण करता है। वर्तमान में परीक्षण मॉड्यूल कॉन्फ़िगरेशन के माध्यम से नियंत्रित किए जाने वाले मुख्य टैग "target_preparer" और "test" टैग हैं।

लक्ष्य तैयार करने वाले

एक "target_preparer" टैग, जैसा कि नाम से पता चलता है, एक लक्ष्य तैयार करने वाले को परिभाषित करता है (देखें ITargetPreparer ) जो एक सेटअप विधि प्रदान करता है, जिसे परीक्षण मॉड्यूल के परीक्षण के लिए निष्पादित होने से पहले बुलाया जाता है; और यदि "target_preparer" टैग में संदर्भित वर्ग भी ITargetCleaner लागू करता है, तो परीक्षण मॉड्यूल समाप्त होने के बाद इसकी टियरडाउन विधि लागू की जाएगी।

बिल्ट-इन कॉमन मॉड्यूल कॉन्फिगरेशन का उपयोग करने के लिए, अपने परीक्षण मॉड्यूल के लिए शीर्ष स्तर के फ़ोल्डर में एक नई फ़ाइल 'AndroidTest.xml' जोड़ें, और इसे निम्नलिखित सामग्री के साथ पॉप्युलेट करें:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

एक उदाहरण के रूप में, हम निम्नलिखित विकल्प टैग जोड़ सकते हैं (उपरोक्त "सम्मिलित करें" टिप्पणी पर):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

विकल्प परीक्षण हार्नेस को निम्न के लिए कॉन्फ़िगर करेंगे:

  1. परीक्षण मॉड्यूल लागू होने से पहले, डिवाइस पर शेल कमांड "सेटिंग्स पुट सिक्योर एक्सेसिबिलिटी_इनेबल्ड 1" निष्पादित करें
  2. परीक्षण मॉड्यूल समाप्त होने के बाद, शेल कमांड निष्पादित करें "सेटिंग्स पुट सिक्योर एक्सेसिबिलिटी_इनेबल्ड 0"

इस विशेष उदाहरण में, परीक्षण मॉड्यूल के निष्पादन से पहले/बाद में क्रमशः एक्सेसिबिलिटी सक्षम/अक्षम है। प्रदर्शित एक सरल उदाहरण के साथ, "विकल्प" टैग का उपयोग कैसे किया जाता है, इस पर अधिक विवरण शामिल करना आवश्यक है। जैसा कि ऊपर दिखाया गया है, टैग में दो विशेषताएँ हो सकती हैं: नाम, मान। नाम विशेषता विकल्प के नाम को इंगित करती है, और आगे एक कोलन द्वारा अलग किए गए दो भागों में विभाजित हो जाती है: तैयार करने वाले के लिए संक्षिप्त नाम, और तैयारकर्ता द्वारा प्रस्तावित वास्तविक विकल्प नाम।

मूल्य फ़ील्ड का सटीक उद्देश्य इस बात पर निर्भर करता है कि तैयारकर्ता ने विकल्प को कैसे परिभाषित किया: यह एक स्ट्रिंग, एक संख्या, एक बूलियन, या यहां तक ​​कि एक फ़ाइल पथ आदि भी हो सकता है। उपरोक्त उदाहरण में, "रन-कमांड: रन-कमांड" नाम का अर्थ है कि हम "रन-कमांड" विकल्प के लिए मूल्य निर्धारित कर रहे हैं, जिसे लक्ष्य तैयारकर्ता द्वारा संक्षिप्त नाम "रन-कमांड" के साथ परिभाषित किया गया है; और नाम "रन-कमांड: टियरडाउन-कमांड" का अर्थ है कि हम "टियरडाउन-कमांड" विकल्प के लिए मूल्य निर्धारित कर रहे हैं, जिसे उसी लक्ष्य तैयारकर्ता द्वारा संक्षिप्त नाम "रन-कमांड" के साथ परिभाषित किया गया है। यहां तीन सामान्य लक्ष्य तैयार करने वालों का सारांश दिया गया है:

  • वर्ग का नाम: PushFilePreparer

    • संक्षिप्त नाम : पुश-फाइल
    • फ़ंक्शन : डिवाइस पर गंतव्य में टेस्ट केस फ़ोल्डर के तहत मनमानी फ़ाइलों को धक्का देता है
    • नोट :
      • यह तैयारकर्ता फ़ोल्डर से फ़ोल्डर में, या फ़ाइल से फ़ाइल में धक्का दे सकता है; यानी, आप डिवाइस पर किसी फ़ोल्डर के अंतर्गत फ़ाइल को पुश नहीं कर सकते: आपको उस फ़ोल्डर के अंतर्गत गंतव्य फ़ाइल नाम भी निर्दिष्ट करना होगा
    • विकल्प :
      • पुश-फाइल: एक पुश-स्पेक, स्थानीय फ़ाइल को उस पथ पर निर्दिष्ट करता है जहां इसे डिवाइस पर धक्का दिया जाना चाहिए। दोहराया जा सकता है। यदि एक ही दूरस्थ पथ पर पुश करने के लिए एकाधिक फ़ाइलें कॉन्फ़िगर की गई हैं, तो नवीनतम को पुश किया जाएगा।
      • पुश: (पदावनत) एक पुश-कल्पना, जिसे ' /path/to/srcfile.txt->/path/to/destfile.txt ' या ' /path/to/srcfile.txt->/path/to/destdir/ के रूप में स्वरूपित किया गया है /path/to/srcfile.txt->/path/to/destdir/ '. दोहराया जा सकता है। यह पथ परीक्षण मॉड्यूल निर्देशिका या स्वयं निर्देशिका से संबंधित हो सकता है।
      • पोस्ट-पुश: सभी पुश के प्रयास के बाद डिवाइस पर चलने के लिए एक कमांड (` adb shell <your command> ` के साथ)। विशिष्ट उपयोग का मामला अनुमति के लिए chmod का उपयोग करेगा
  • वर्ग का नाम: InstallApkSetup

    • संक्षिप्त नाम: इंस्टॉल-एपीके
    • फ़ंक्शन: डिवाइस पर गंतव्य में मनमानी एपीके फ़ाइलों को धक्का देता है
    • विकल्प:
      • टेस्ट-फाइल-नाम: डिवाइस पर इंस्टॉल किए जाने वाले एपीके का नाम।
      • इंस्टाल-आर्ग: अपराह्न इंस्टाल कमांड को पास करने के लिए अतिरिक्त तर्क, प्रमुख डैश सहित, उदाहरण के लिए "-डी"। दोहराया जा सकता है
  • वर्ग का नाम: RunCommandTargetPreparer

    • संक्षिप्त नाम: रन-कमांड
    • फ़ंक्शन: परीक्षण मॉड्यूल निष्पादन से पहले या बाद में मनमाने ढंग से शेल कमांड निष्पादित करता है
    • विकल्प:
      • रन-कमांड: एडीबी खोल कमांड चलाने के लिए। दोहराया जा सकता है
      • टियरडाउन-कमांड: टियरडाउन चरण के दौरान चलाने के लिए एडीबी शेल कमांड। दोहराया जा सकता है

टेस्ट क्लास

परीक्षण को निष्पादित करने के लिए उपयोग करने के लिए एक परीक्षण वर्ग ट्रेड फेडरेशन वर्ग है।

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

यहाँ तीन सामान्य परीक्षण वर्ग हैं:

  • कक्षा का नाम: GTest

    • संक्षिप्त नाम: gtest
    • फ़ंक्शन: एक परीक्षण जो दिए गए डिवाइस पर मूल परीक्षण पैकेज चलाता है।
    • विकल्प:
      • नेटिव-टेस्ट-डिवाइस-पथ: डिवाइस पर पथ जहां देशी परीक्षण स्थित हैं।
  • कक्षा का नाम: इंस्ट्रुमेंटेशन टेस्ट

    • संक्षिप्त नाम: इंस्ट्रूमेंटेशन
    • फ़ंक्शन: एक परीक्षण जो दिए गए डिवाइस पर एक उपकरण परीक्षण पैकेज चलाता है
    • विकल्प:
      • पैकेज: चलाने के लिए एंड्रॉइड टेस्ट एप्लिकेशन का मेनिफेस्ट पैकेज नाम।
      • वर्ग: चलाने के लिए परीक्षण वर्ग का नाम।
      • विधि: चलाने के लिए परीक्षण विधि का नाम।
  • कक्षा का नाम: AndroidJUnitTest

    • फ़ंक्शन: एक परीक्षण जो android.support.test.runner.AndroidJUnitRunner का उपयोग करके दिए गए डिवाइस पर एक इंस्ट्रूमेंटेशन टेस्ट पैकेज चलाता है। यह एक इंस्ट्रूमेंटेशन टेस्ट को निष्पादित करने का मुख्य तरीका है।