कमांड लाइन से जांच करना

इस दस्तावेज़ में सीधे कमांड लाइन से टेस्ट चलाने का तरीका बताया गया है. यह यह मान लिया है कि आपको Android ऐप्लिकेशन बनाना आता है और टेस्ट लिखें. अपने एपीआई की मदद से, ऐप्लिकेशन के तौर पर, Android पर टेस्ट ऐप्लिकेशन देखें.

जब Gradle बिल्ड सिस्टम का इस्तेमाल करके अपना ऐप्लिकेशन बनाया जाता है, तब Android Gradle प्लगिन की मदद से, अपने Gradle से टेस्ट किए जा सकते हैं कमांड लाइन का इस्तेमाल करके प्रोजेक्ट. ज़्यादा बेहतर कंट्रोल के लिए, Android डीबग ब्रिज के ज़रिए जांच करने का विकल्प चुनें (adb) शेल. यह तब फ़ायदेमंद हो सकता है, जब लगातार इंटिग्रेशन वाला एनवायरमेंट.

कमांड लाइन की मदद से, ऑटोमेटेड इंस्ट्रुमेंट वाले टेस्ट चलाने का तरीका जानने के लिए ऐसे वर्चुअल डिवाइस जिन्हें Gradle आपके लिए मैनेज करता है, Gredle की मदद से अपने टेस्ट को स्केल करें मैनेज किए जा रहे डिवाइस.

Gradle के साथ टेस्ट करना

'Android Gradle प्लग इन' की मदद से, Gradle प्रोजेक्ट से जांच की जा सकती है. इसके लिए कमांड लाइन लिखें.

यहां दी गई टेबल में, Gradle के साथ टेस्ट करने का तरीका बताया गया है:

टेबल 1. अलग-अलग तरीके से जांच करें ग्रेडल

यूनिट टेस्ट टाइप चलाने के लिए निर्देश जांच के नतीजे की जगह
लोकल यूनिट टेस्ट test टास्क चलाएं:

./gradlew test
एचटीएमएल के टेस्ट नतीजे की फ़ाइलें:
path_to_your_project/module_name/build/reports/tests/ डायरेक्ट्री.

एक्सएमएल के टेस्ट नतीजे की फ़ाइलें:
path_to_your_project/module_name/build/test-results/ डायरेक्ट्री.

इंस्ट्रुमेंट की गई इकाई की जांच connectedAndroidTest टास्क चलाएं:

./gradlew connectedAndroidTest
एचटीएमएल के टेस्ट नतीजे की फ़ाइलें:
path_to_your_project/module_name/build/reports/androidTests/connected/ डायरेक्ट्री.

एक्सएमएल के टेस्ट नतीजे की फ़ाइलें:
path_to_your_project/module_name/build/outputs/androidTest-results/connected/ डायरेक्ट्री.

Gradle सहायता टास्क के नाम का छोटा रूप. उदाहरण के लिए, connectedAndroidTest टास्क को ऐसे शुरू किया जा सकता है निम्न आदेश दर्ज करना:

./gradlew cAT

आपके पास Gradle टास्क check और connectedCheck को चलाने का विकल्प भी है. ये टास्क, आपके स्थानीय या इंस्ट्रुमेंट वाले टेस्ट क्रम से चलाते हैं, लेकिन अन्य Gradle प्लग इन से जोड़े गए अन्य चेक को भी शामिल करना चाहिए.

किसी मॉड्यूल पर टेस्ट चलाना

test और connectedAndroidTest टास्क, आपके हर मॉड्यूल की जांच करते हैं प्रोजेक्ट. किसी खास मॉड्यूल पर टेस्ट प्रीफ़िक्स के तौर पर test या connectedAndroidTest टास्क के साथ मॉड्यूल का नाम जोड़ें कोलन (:). उदाहरण के लिए, निम्न आदेश केवल mylibrary मॉड्यूल:

./gradlew mylibrary:connectedAndroidTest

बिल्ड के वैरिएंट पर टेस्ट चलाना

test और connectedAndroidTest टास्क, हर टास्क की जांच करते हैं वैरिएंट बनाएं. आप नीचे दिए गए सिंटैक्स का इस्तेमाल करके खास बिल्ड वैरिएंट:

  • लोकल यूनिट टेस्ट के लिए:
    ./gradlew testVariantNameUnitTest
  • इंस्ट्रुमेंट्ड टेस्ट के लिए:
    ./gradlew connectedVariantNameAndroidTest

टेस्ट करने के खास तरीके या क्लास चलाना

लोकल यूनिट टेस्ट करते समय, Gradle आपको --tests फ़्लैग. उदाहरण के लिए, निम्न आदेश केवल sampleTestMethod, बताए गए बिल्ड वैरिएंट के लिए टेस्ट करता है. इस बारे में ज़्यादा जानने के लिए --tests फ़्लैग का इस्तेमाल करके, Gradle का दस्तावेज़ पढ़ें टेस्ट फ़िल्टर करना.


./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'

adb की मदद से टेस्ट चलाना

जब Android डीबग ब्रिज (adb), ऐसे कई और विकल्प हैं किसी भी अन्य तरीके के मुकाबले, चलाने के लिए टेस्ट चुनना. कोई एक व्यक्ति भी चुना जा सकता है जांच करने के तरीके, कस्टम एनोटेशन के हिसाब से जांच को फ़िल्टर करें या जांच के बारे में बताएं के विकल्प. चूंकि परीक्षण रन को पूरी तरह कमांड लाइन से नियंत्रित किया जाता है, इसलिए आप शेल स्क्रिप्ट से अपने टेस्ट को कई तरह से पसंद के मुताबिक बना सकते हैं.

कमांड लाइन से जांच करने के लिए, adb shell चलाकर कमांड लाइन शुरू करें शेल भी खोलें. उस शेल के अंदर आप ऐक्टिविटी मैनेजर ऐसा करने के लिए, am निर्देश का इस्तेमाल करें. साथ ही, इसके instrument सबकमांड का इस्तेमाल करें.

शॉर्टकट के तौर पर, आप adb शेल शुरू कर सकते हैं, am instrument को कॉल कर सकते हैं, और कमांड लाइन, सभी को एक इनपुट लाइन पर फ़्लैग करती है. डिवाइस पर शेल खुलता है या एम्युलेटर, आपके टेस्ट चलाता है, आउटपुट देता है, और फिर कमांड लाइन पर वापस जाता है अपने कंप्यूटर पर.

am instrument से टेस्ट करने के लिए:

  1. अपना मुख्य ऐप्लिकेशन बनाएं या फिर से बनाएं और टेस्ट पैकेज.
  2. अपना टेस्ट पैकेज और मुख्य पैकेज इंस्टॉल करें ऐप्लिकेशन की Android पैकेज फ़ाइलें (APK फ़ाइलें) हों या एम्युलेटर.
  3. कमांड लाइन पर, यह लिखें:

    adb shell am instrument -w <test_package_name>/<runner_class>
    

    जहां <test_package_name>, आपके टेस्ट के Android पैकेज का नाम है ऐप्लिकेशन है और <runner_class>, Android टेस्ट रनर क्लास का नाम है इस्तेमाल कर रहे हैं. Android पैकेज का नाम, मेनिफ़ेस्ट एलिमेंट के पैकेज एट्रिब्यूट की वैल्यू शामिल करें (AndroidManifest.xml).

    आम तौर पर, Android की जांच करने वाली रनर क्लास AndroidJUnitRunner:

    adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
    

आपकी जांच के नतीजे, STDOUT में दिखते हैं.

am इंस्ट्रुमेंट फ़्लैग

am instrument निर्देश के साथ इस्तेमाल किए जाने वाले सभी फ़्लैग की सूची ढूंढने के लिए, adb shell am help दौड़ें. कुछ अहम फ़्लैग के बारे में इसमें बताया गया है निम्न तालिका:

दूसरी टेबल. अहम जानकारी: am instrument फ़्लैग

चिह्नित करें वैल्यू ब्यौरा
-w (कोई नहीं) इससे am instrument को इंस्ट्रुमेंटेशन पूरा होने तक इंतज़ार करना पड़ता है खुद को खत्म करने से पहले खत्म हो जाता है. ऐसा करने से तब तक खुला रहेगा, जब तक जांच पूरी नहीं हो जाती. यह फ़्लैग इन कामों के लिए ज़रूरी है अपने टेस्ट के नतीजे देख सकें.
-r (कोई नहीं) आउटपुट, रॉ फ़ॉर्मैट में मिलता है. जब चाहें, तब इस फ़्लैग का इस्तेमाल करें परफ़ॉर्मेंस के मेज़रमेंट इकट्ठा कर सकते हैं, ताकि उन्हें टेस्ट के नतीजे. यह फ़्लैग, फ़्लैग के साथ इस्तेमाल करने के लिए बनाया गया है -e perf true (इस दस्तावेज़ में दर्ज है am इंस्ट्रुमेंट के विकल्प) सेक्शन पर जाएं.
-e <test_options> की-वैल्यू पेयर के तौर पर टेस्टिंग के विकल्प उपलब्ध कराता है. कॉन्टेंट बनाने am instrument टूल इन्हें तय की गई इंस्ट्रुमेंटेशन क्लास onCreate() तरीका. आप एक से ज़्यादा बार दोहराए जा सकते हैं -e <test_options>. कुंजियां और मान ये हैं इसमें बताया गया है am इंस्ट्रुमेंट के विकल्प सेक्शन पर जाएं. आप इनके साथ केवल इन की-वैल्यू पेयर का इस्तेमाल करें AndroidJUnitRunner या InstrumentationTestRunner के साथ और इसकी सब-क्लास शामिल हैं. किसी अन्य क्लास के साथ उनका इस्तेमाल करने से कोई असर नहीं पड़ता.
--no-hidden-api-checks (कोई नहीं) छिपे हुए एपीआई के इस्तेमाल पर लगी पाबंदियां बंद करता है. ज़्यादा के लिए यह जानकारी कि छिपे हुए एपीआई क्या हैं और इसका आपके कारोबार पर क्या असर पड़ सकता है ऐप्लिकेशन, पढ़ें बिना SDK टूल वाले इंटरफ़ेस पर पाबंदियां.

am इंस्ट्रुमेंट के विकल्प

am instrument टूल, जांच के विकल्पों को इन चीज़ों के लिए पास करता है AndroidJUnitRunner या InstrumentationTestRunner की-वैल्यू पेयर के तौर पर दिखाया जा सकता है. इसके लिए, इस सिंटैक्स के साथ -e फ़्लैग का इस्तेमाल किया जाता है:

-e <key> <value>

कुछ कुंजियों को एक से ज़्यादा मान स्वीकार किए जाते हैं. आपको कॉमा लगाकर अलग की गई सूची. उदाहरण के लिए, AndroidJUnitRunner, package कुंजी के लिए एक से ज़्यादा वैल्यू देता है:

adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner

नीचे दी गई टेबल में उन की-वैल्यू पेयर की सूची दी गई है जिनका इस्तेमाल अपने टेस्ट रनर के साथ किया जा सकता है:

तीसरी टेबल. -e फ़्लैग की-वैल्यू पेयर का इस्तेमाल करना आपका टेस्ट रनर

सुरक्षा कुंजी वैल्यू ब्यौरा
package <Java_package_name> इनमें से किसी एक के लिए, पूरी तरह क्वालिफ़ाइड Java पैकेज नाम पैकेज को टेस्ट ऐप्लिकेशन में शामिल करें. इसका इस्तेमाल करने वाली कोई भी टेस्ट केस क्लास पैकेज का नाम चलाया गया. ध्यान दें कि यह Android पैकेज का नाम; टेस्ट पैकेज में Android पैकेज का नाम, लेकिन उसमें कई Java पैकेज हो सकते हैं.
class <class_name> किसी एक टेस्ट केस के लिए, पूरी तरह क्वालिफ़ाइड Java क्लास नाम क्लास. सिर्फ़ इस टेस्ट केस क्लास को चलाया जाता है.
<class_name>#method name पूरी तरह क्वालिफ़ाइड टेस्ट केस क्लास का नाम और उसका कोई एक तरीका. सिर्फ़ यह तरीका अपनाया जाता है. क्लास के बीच में हैश मार्क (#) नोट करें नाम और तरीके का नाम.
func true उन सभी टेस्ट क्लास को चलाता है जो एक्सटेंडेड हैं InstrumentationTestCase.
unit true ऐसी सभी टेस्ट क्लास चलाता है जो दोनों में से किसी एक को भी एक्सपैंड नहीं करते InstrumentationTestCase या PerformanceTestCase.
size [small | medium | large] साइज़ के हिसाब से जानकारी देने वाला टेस्ट करने का तरीका चलाता है. ये एनोटेशन @SmallTest, @MediumTest, और @LargeTest.
perf true लागू की जाने वाली सभी टेस्ट क्लास चलाता है PerformanceTestCase. इस विकल्प का इस्तेमाल करते समय, इसके लिए -r फ़्लैग तय करें am instrument ताकि आउटपुट को रॉ फ़ॉर्मैट में रखा जा सके और उसे टेस्ट नतीजों के तौर पर फिर से फ़ॉर्मैट नहीं किया गया हो.
debug true डीबग मोड में जांच करता है.
log true सभी तय टेस्ट लोड और लॉग करता है, लेकिन उन्हें नहीं चलाता है. जांच जानकारी, STDOUT में दिखती है. पुष्टि करने के लिए इसका इस्तेमाल करें कॉम्बिनेशन की जांच करें.
emma true EMMA कोड कवरेज का विश्लेषण करता है और आउटपुट को इस पर लिखता है डिवाइस पर /data/<app_package>/coverage.ec. यहां की यात्रा पर हूं इसे बदलने के लिए, coverageFile कुंजी का इस्तेमाल करें जिसकी जानकारी नीचे दी गई एंट्री में दी गई है.

ध्यान दें: इस विकल्प के लिए ईएमएमए इंस्ट्रुमेंट की ज़रूरत होती है बिल्ड का टेस्ट किया जा सकता है, जिसे आप इसकी मदद से जनरेट कर सकते हैं coverage टारगेट.

coverageFile <filename> यह EMMA कवरेज फ़ाइल की डिफ़ॉल्ट जगह को बदल देता है डिवाइस. इस वैल्यू को पाथ और फ़ाइल के नाम के तौर पर, UNIX फ़ॉर्मैट में बताएं. डिफ़ॉल्ट फ़ाइल नाम का वर्णन emma कुंजी.

-e फ़्लैग का इस्तेमाल करते समय इन बातों का ध्यान रखें:

  • am instrument शुरू करता है onCreate(Bundle) Bundle में की-वैल्यू शामिल हो पेयर.
  • package कुंजी को class कुंजी के मुकाबले प्राथमिकता दी जाती है. अगर आप और फिर उस पैकेज, Android में किसी क्लास को अलग से तय करें पैकेज की सभी जांच करता है और क्लास की कुंजी को अनदेखा कर देता है.
  • func कुंजी और unit कुंजी अलग-अलग होती हैं.

इस्तेमाल करने के उदाहरण

यहां दिए सेक्शन में, टेस्ट चलाने के लिए am instrument का इस्तेमाल करने के उदाहरण दिए गए हैं. वे नीचे दी गई संरचना पर आधारित होते हैं:

  • जांच पैकेज को Android पैकेज का नाम com.android.demo.app.tests मिला है.
  • दो इंस्ट्रुमेंटेड टेस्ट क्लास:
    • TestClass1, जिसमें testMethod1 तरीका शामिल है.
    • TestClass2, जिसमें testMethod2 और testMethod3 जांच के तरीके शामिल हैं.
  • इस टूल की जांच करने के लिए, AndroidJUnitRunner.

पूरा टेस्ट पैकेज चलाएं

टेस्ट पैकेज में सभी टेस्ट क्लास चलाने के लिए, यह डालें:

adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

टेस्ट केस क्लास में सभी टेस्ट चलाना

TestClass1 क्लास में सभी टेस्ट चलाने के लिए, यह डालें:

adb shell am instrument -w  \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

जांच का सबसेट चुनना

TestClass2 में TestClass1 क्लास और testMethod3 तरीके में सभी टेस्ट चलाने के लिए, डालें:

adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner

आपको यहां इस्तेमाल के ज़्यादा उदाहरण दिखेंगे AndroidJUnitRunner एपीआई का संदर्भ.