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

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

  • अन्य एपीके इंस्टॉल करें (परीक्षण एपीके के अतिरिक्त)
  • डिवाइस पर कुछ फ़ाइलें पुश करें
  • कमांड चलाएँ (उदाहरण के लिए एडीबी शेल पीएम...)

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

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

परीक्षण मॉड्यूल के लिए परीक्षण मॉड्यूल कॉन्फ़िगरेशन एक आवश्यक XML फ़ाइल है जिसे शीर्ष स्तर के मॉड्यूल स्रोत फ़ोल्डर में जोड़ा जाता है, जिसका नाम 'AndroidTest.xml' है। 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 डालें"

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

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

  • कक्षा का नाम: पुशफ़ाइलप्रेपरर

    • संक्षिप्त नाम : पुश-फ़ाइल
    • फ़ंक्शन : टेस्ट केस फ़ोल्डर के अंतर्गत मनमानी फ़ाइलों को डिवाइस पर गंतव्य तक धकेलता है
    • टिप्पणियाँ :
      • यह प्रिपेयरर एक फ़ोल्डर से दूसरे फ़ोल्डर, या फ़ाइल से फ़ाइल पर पुश कर सकता है; अर्थात्, आप किसी फ़ाइल को डिवाइस पर किसी फ़ोल्डर के अंतर्गत नहीं धकेल सकते: आपको उस फ़ोल्डर के अंतर्गत गंतव्य फ़ाइल नाम भी निर्दिष्ट करना होगा
    • विकल्प :
      • पुश-फ़ाइल: एक पुश-स्पेक, स्थानीय फ़ाइल को उस पथ पर निर्दिष्ट करता है जहां इसे डिवाइस पर पुश किया जाना चाहिए। दोहराया जा सकता है. यदि एकाधिक फ़ाइलों को एक ही दूरस्थ पथ पर धकेलने के लिए कॉन्फ़िगर किया गया है, तो नवीनतम को धकेल दिया जाएगा।
      • पुश: (पदावनत) एक पुश-स्पेक, जिसे ' /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

    • संक्षिप्त नाम: इंस्टॉल-एपीके
    • फ़ंक्शन: डिवाइस पर गंतव्य के अंतर्गत मनमानी एपीके फ़ाइलों को पुश करता है
    • विकल्प:
      • परीक्षण-फ़ाइल-नाम: डिवाइस पर इंस्टॉल किए जाने वाले एपीके का नाम।
      • इंस्टाल-आर्ग: pm इंस्टाल कमांड को दिए जाने वाले अतिरिक्त तर्क, जिसमें लीडिंग डैश भी शामिल है, उदाहरण के लिए "-d"। दोहराया जा सकता है
  • वर्ग का नाम: 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 का उपयोग करके दिए गए डिवाइस पर एक इंस्ट्रूमेंटेशन टेस्ट पैकेज चलाता है। यह एक इंस्ट्रूमेंटेशन टेस्ट निष्पादित करने का मुख्य तरीका है।