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

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

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

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

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

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

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

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

टेस्ट क्लास

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

<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
    • समारोह: एक टेस्ट कि दिए गए डिवाइस पर एक देशी परीक्षण पैकेज चलाता है।
    • विकल्प:
      • देशी-परीक्षण उपकरण-पथ: डिवाइस जहां देशी परीक्षण स्थित हैं पर पथ।
  • वर्ग के नाम: InstrumentationTest

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

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