टेस्ट के लिए जटिल कॉन्फ़िगरेशन

कुछ टेस्ट मॉड्यूल के लिए, ज़रूरत के मुताबिक सेट अप करना पड़ सकता है. साथ ही, उन चरणों को अलग-अलग कर सकते हैं जो परीक्षण केस में ही निष्पादित की जानी चाहिए. इसके कुछ उदाहरणों में ये शामिल हैं:

  • अन्य apks इंस्टॉल करें (टेस्ट apk के अलावा)
  • कुछ फ़ाइलों को डिवाइस पर पुश करें
  • कमांड (जैसे कि adb Shell pm ...)

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

CTS से प्रेरणा लेकर, हमने टेस्ट मॉड्यूल कॉन्फ़िगरेशन का कॉन्सेप्ट पेश किया है, ताकि ऐसे टास्क पूरे किए जा सकें. ऊपर दी गई सामान्य टास्क की सूची को, कॉन्फ़िगरेशन की सिर्फ़ कुछ लाइनों से पूरा किया जा सकता है. ज़्यादा से ज़्यादा सहूलियत के लिए, अपना टारगेट भी लागू किया जा सकता है तैयार करने वाले का इस्तेमाल, जैसा कि ITargetTargetr ने बताया है या ITargetTargeter में शेयर किया गया है, और उन्हें अपने टेस्ट मॉड्यूल कॉन्फ़िगरेशन में इस्तेमाल करने के लिए कॉन्फ़िगर करें.

टेस्ट मॉड्यूल के लिए, टेस्ट मॉड्यूल कॉन्फ़िगरेशन के लिए सबसे ऊपर ज़रूरी एक्सएमएल फ़ाइल जोड़नी होती है लेवल मॉड्यूल सोर्स फ़ोल्डर, जिसका नाम ‘AndroidTest.xml’ है. एक्सएमएल इस फ़ॉर्मैट का पालन करता है . फ़िलहाल, टेस्ट मॉड्यूल कॉन्फ़िगरेशन की मदद से मैनेज किए जाने वाले मुख्य टैग, “target_preparer” और "test" टैग हैं.

टैक्स भरने वाले लोगों को टारगेट करना

जैसा कि नाम से ही पता चलता है, “target_preparer” टैग से टारगेट तैयार करने वाला टूल तय होता है (ITargetCampaignr देखें) जो सेटअप का तरीका उपलब्ध कराता है. इसे टेस्ट मॉड्यूल के एक्ज़ीक्यूट करने से पहले कॉल किया जाता है टेस्ट करने के लिए; और अगर “target_preparer” टैग में दी गई क्लास भी शामिल है implements ITargetTargeter, परीक्षण मॉड्यूल के खत्म हो जाने के बाद इसकी टियरडाउन विधि शुरू की जाएगी.

बिल्ट-इन कॉमन मॉड्यूल कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, ‘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>

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

    <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. टेस्ट मॉड्यूल को शुरू करने से पहले, डिवाइस पर शेल कमांड “settings put secure accessibility_enabled 1” चलाएं
  2. टेस्ट मॉड्यूल के पूरा होने के बाद, शेल कमांड “सेटिंग सुरक्षित रखें Accessibility_enabled 0”

खास तौर पर, इस उदाहरण में, सुलभता सुविधाओं को मॉड्यूल का टेस्ट होता है. एक आसान उदाहरण से समझा जा सकता है कि “विकल्प” टैग का इस्तेमाल कैसे किया जाता है, इस बारे में ज़्यादा जानकारी दें. जैसा कि ऊपर दिखाया गया है, टैग में दो विशेषताएं हो सकती हैं: नाम, मान. नाम एट्रिब्यूट से, तैयार करने वाले के विकल्पों में से किसी एक विकल्प का इस्तेमाल करें.

वैल्यू फ़ील्ड का असल मकसद, इस बात पर निर्भर करता है कि डेटा तैयार करने वाले व्यक्ति ने विकल्प को कैसे तय किया है: यह स्ट्रिंग, संख्या, बूलियन या फ़ाइल पाथ हो सकता है. यहां तीन सामान्य टारगेट तैयार करने वालों की खास जानकारी दी गई है:

  • क्लास का नाम: PushFilePreparer

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

    • छोटा नाम:install-apk
    • फ़ंक्शन: आर्बिट्रेरी apk फ़ाइलों को गंतव्य चालू में पुश करता है डिवाइस
    • विकल्प:
      • test-file-name: डिवाइस पर इंस्टॉल किए जाने वाले APK का नाम.
      • install-आग: pm इंस्टॉल को दिए जाने वाले अतिरिक्त आर्ग्युमेंट आदेश, जिसमें आगे वाला डैश शामिल है, जैसे “-d” चुनें. दोहराया जा सकता है
  • क्लास का नाम: RunCommandTargetFramer

    • छोटा नाम: run-command
    • फ़ंक्शन: जांच से पहले या बाद में आर्बिट्रेरी शेल कमांड एक्ज़ीक्यूट करता है मॉड्यूल एक्ज़ीक्यूशन
    • विकल्प:
      • run-command:adb शेल कमांड चलाने के लिए. दोहराया जा सकता है
      • teardown-command:डिवाइस हटाने के दौरान चलाया जाने वाला adb shell कमांड. दोहराया जा सकता है

टेस्ट क्लास

टेस्ट क्लास, ट्रेड फ़ेडरेशन क्लास होती है. इसका इस्तेमाल टेस्ट करने के लिए किया जाता है.

<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
    • फ़ंक्शन: ऐसा टेस्ट जो दिए गए डिवाइस पर नेटिव टेस्ट पैकेज चलाता है.
    • विकल्प:
      • NATIVE-test-device-path:डिवाइस का वह पाथ जहां नेटिव टेस्ट मौजूद हैं.
  • क्लास का नाम: इंस्ट्रुमेंटेशनटेस्ट

    • छोटा नाम: इंस्ट्रुमेंटेशन
    • फ़ंक्शन: यह एक ऐसा टेस्ट है जो दिए गए डिवाइस पर इंस्ट्रूमेंटेशन टेस्ट पैकेज चलाता है
    • विकल्प:
      • पैकेज: Android टेस्ट ऐप्लिकेशन के मेनिफ़ेस्ट पैकेज का नाम.
      • class: चलाने के लिए टेस्ट क्लास का नाम.
      • method: जिस तरीके से जांच करनी है उसका नाम.
  • क्लास का नाम: AndroidJUnitTest

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