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

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

  • अन्य एपीके स्थापित करें (परीक्षण एपीके के अतिरिक्त)
  • कुछ फ़ाइलों को डिवाइस पर पुश करें
  • आदेश चलाएं (उदाहरण के लिए adb शेल 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

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