AndroidJUnitRunner

AndroidJUnitRunner क्लास एक JUnit टेस्ट रनर है, जो आपको Android डिवाइसों पर इंस्ट्रुमेंट्ड JUnit 4 टेस्ट करने देता है, इनमें Espresso, UI Automator, और लिखें का इस्तेमाल करने वाले ऐप्लिकेशन भी शामिल हैं टेस्टिंग फ़्रेमवर्क.

जांच करने वाला टूल, आपके टेस्ट पैकेज और टेस्ट में आने वाले ऐप्लिकेशन को डिवाइस, आपके टेस्ट चलाने, और टेस्ट के नतीजों को रिपोर्ट करने में मदद करता है.

यह टेस्ट रनर, कई सामान्य टेस्टिंग टास्क के साथ काम करता है. इनमें ये टास्क शामिल हैं:

JUnit टेस्ट लिखें

नीचे दिया गया कोड स्निपेट दिखाता है कि किसी इंस्ट्रुमेंटेड JUnit 4 को कैसे लिखा जा सकता है जांच करके पुष्टि करें कि ChangeTextBehavior में changeText ऑपरेशन क्लास ठीक से काम करती है:

Kotlin

@RunWith(AndroidJUnit4::class) // Only needed when mixing JUnit 3 and 4 tests
@LargeTest // Optional runner annotation
class ChangeTextBehaviorTest {
 val stringToBeTyped = "Espresso"
 // ActivityTestRule accesses context through the runner
 @get:Rule
 val activityRule = ActivityTestRule(MainActivity::class.java)

 @Test fun changeText_sameActivity() {
 // Type text and then press the button.
 onView(withId(R.id.editTextUserInput))
 .perform(typeText(stringToBeTyped), closeSoftKeyboard())
 onView(withId(R.id.changeTextBt)).perform(click())

 // Check that the text was changed.
 onView(withId(R.id.textToBeChanged))
 .check(matches(withText(stringToBeTyped)))
 }
}

Java

@RunWith(AndroidJUnit4.class) // Only needed when mixing JUnit 3 and 4 tests
@LargeTest // Optional runner annotation
public class ChangeTextBehaviorTest {

    private static final String stringToBeTyped = "Espresso";

    @Rule
    public ActivityTestRuleM<ainActivity;> activityRule =
            new ActivityTestRule;<>(MainActivity.class);

    @Test
    public void changeText_sameActivity() {
        // Type text and then press the button.
        onView(withId(R.id.editTextUserInput))
                .perform(typeText(stringToBeTyped), closeSoftKeyboard());
        onView(withId(R.id.changeTextBt)).perform(click());

        // Check that the text was changed.
        onView(withId(R.id.textToBeChanged))
                .check(matches(withText(stringToBeTyped)));
    }
}

ऐप्लिकेशन का कॉन्टेक्स्ट ऐक्सेस करना

जांच के लिए AndroidJUnitRunner का इस्तेमाल करने पर, आपके पास कॉन्टेक्स्ट को ऐक्सेस करने का विकल्प होता है स्टैटिक कॉल करके ऐप्लिकेशन को टेस्ट किया जा रहा है ApplicationProvider.getApplicationContext() तरीका. अगर आपने आपके ऐप्लिकेशन में Application की सब-क्लास है, तो यह तरीका आपके कस्टम सब-क्लास का संदर्भ दे दिया जाएगा.

अगर आप टूल लागू करने वाले व्यक्ति हैं, तो InstrumentationRegistry क्लास. इस क्लास में शामिल हैं Instrumentation ऑब्जेक्ट, टारगेट ऐप्लिकेशन Context ऑब्जेक्ट, टेस्ट ऐप्लिकेशन Context ऑब्जेक्ट और कमांड लाइन आर्ग्युमेंट आपके टेस्ट में पास किए गए.

टेस्ट फ़िल्टर करें

अपने JUnit 4.x टेस्ट में, टेस्ट रन को कॉन्फ़िगर करने के लिए एनोटेशन का इस्तेमाल किया जा सकता है. यह सुविधा, बॉयलरप्लेट और कंडिशनल कोड को जोड़ने की ज़रूरत को कम कर देती है टेस्ट. JUnit 4 के साथ काम करने वाले स्टैंडर्ड एनोटेशन के अलावा, रनर, Android के लिए बने एनोटेशन भी इस्तेमाल करता है. इनमें, ये शामिल हैं फ़ॉलो किया जा रहा है:

  • @RequiresDevice: इससे पता चलता है कि टेस्ट सिर्फ़ फ़िज़िकल के लिए उपलब्ध है, एम्युलेटर पर नहीं.
  • @SdkSuppress: यह टेस्ट को कम वर्शन वाले Android API पर चलने से रोकता है लेवल से ज़्यादा कमाई होती है. उदाहरण के लिए, नीचे के सभी एपीआई लेवल पर टेस्ट को बंद करने के लिए 23 से ज़्यादा होने पर, एनोटेशन @SDKSuppress(minSdkVersion=23) का इस्तेमाल करें.
  • @SmallTest, @MediumTest, और @LargeTest: तय करें कि टेस्ट कितनी देर तक करना है को चलाने में समय लगता है और इसलिए, आप कितनी जल्दी-जल्दी टेस्ट कर सकते हैं. आपने लोगों तक पहुंचाया मुफ़्त में इस एनोटेशन का इस्तेमाल करके यह फ़िल्टर किया जा सकता है कि कौनसे टेस्ट चलाने हैं. साथ ही, android.testInstrumentationRunnerArguments.size प्रॉपर्टी:
-Pandroid.testInstrumentationRunnerArguments.size=small

शार्ड टेस्ट

अगर आपको जांचों को एक साथ चलाना हो, तो उन्हें सभी के साथ शेयर करें एक से ज़्यादा सर्वर का इस्तेमाल करके, उन्हें तेज़ी से चलाया जा सकता है. इसके अलावा, उन्हें ग्रुप में बांटा जा सकता है या शर्ड. टेस्ट रनर की मदद से, किसी टेस्ट सुइट को कई हिस्सों में बांटा जा सकता है शार्ड, ताकि आप एक ही शार्ड से संबंधित परीक्षण आसानी से एक साथ चला सकें ग्रुप. हर शार्ड की पहचान इंडेक्स नंबर से की जाती है. टेस्ट चलाते समय, बनाने के लिए अलग-अलग शार्ड की संख्या तय करने के लिए -e numShards विकल्प और कौनसा शार्ड चलाना है, यह तय करने के लिए -e shardIndex विकल्प.

उदाहरण के लिए, टेस्ट सुइट को 10 शार्ड में बांटने और सिर्फ़ टेस्ट करने के लिए दूसरे शार्ड में समूहीकृत किए गए हैं, तो नीचे दिए गए adb कमांड का उपयोग करें:

adb shell am instrument -w -e numShards 10 -e shardIndex 2

Android Test Orchestrator का इस्तेमाल करना

Android Test Orchestrator की मदद से, अपने ऐप्लिकेशन का हर टेस्ट Instrumentation को खुद शुरू किया. AndroidJUnitRunner वर्शन 1.0 का इस्तेमाल करते समय या बाद में, आपके पास Android Test Orchestrator का ऐक्सेस है.

Android Test Orchestrator में, टेस्टिंग के लिए ये फ़ायदे मिलते हैं वातावरण:

  • कम से कम शेयर की गई स्थिति: हर टेस्ट अपने Instrumentation में चलता है इंस्टेंस. इसलिए, अगर आपके टेस्ट में ऐप्लिकेशन की स्थिति एक जैसी है, तो हर जांच के बाद, डिवाइस के सीपीयू या मेमोरी से हटा दिया जाता है. हर एक के बाद, अपने डिवाइस के सीपीयू और मेमोरी से सभी शेयर की गई स्थिति को हटाने के लिए करने के लिए, clearPackageData फ़्लैग का इस्तेमाल करें. Gredle से चालू करें सेक्शन देखें सेक्शन देखें.
  • क्रैश अलग-अलग होते हैं: एक टेस्ट क्रैश होने पर भी, यह सिर्फ़ अपने टेस्ट क्रैश को हटाता है Instrumentation का अपना इंस्टेंस. इसका मतलब है कि दुनिया भर में मौजूद आपका सुइट अब भी काम कर रहा है, ताकि आपको जांच के पूरे नतीजे मिल सकें.

इससे टेस्ट पूरा होने में लगने वाला समय बढ़ सकता है, क्योंकि Android Test Orchestrator, हर टेस्ट के बाद ऐप्लिकेशन को रीस्टार्ट करता है.

Android Studio और Firebase टेस्ट लैब, दोनों में Android टेस्ट ऑर्केस्ट्रार मौजूद है पहले से इंस्टॉल है, लेकिन आपको Android में यह सुविधा चालू करनी होगी Studio.

Gradle से चालू करें

Gradle कमांड-लाइन टूल का इस्तेमाल करके, Android Test Orchestrator को चालू करने के लिए, यह तरीका अपनाएं:

  • पहला चरण: Gradle फ़ाइल में बदलाव करें. अपने प्रोजेक्ट की build.gradle फ़ाइल:
android {
 defaultConfig {
  ...
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

  // The following argument makes the Android Test Orchestrator run its
  // "pm clear" command after each test invocation. This command ensures
  // that the app's state is completely cleared between tests.
  testInstrumentationRunnerArguments clearPackageData: 'true'
 }

 testOptions {
  execution 'ANDROIDX_TEST_ORCHESTRATOR'
 }
}

dependencies {
 androidTestImplementation 'androidx.test:runner:1.1.0'
 androidTestUtil 'androidx.test:orchestrator:1.1.0'
}
  • दूसरा चरण: यहां दिए गए निर्देश को लागू करके, Android की जांच करने वाला टूल चलाएं:
./gradlew connectedCheck

Android Studio से चालू करें

Android Studio में Android Test Orchestrator को चालू करने के लिए, दिखाए गए स्टेटमेंट जोड़ें अपने ऐप्लिकेशन की build.gradle फ़ाइल में, Gradle से चालू करें पर जाएं.

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

कमांड लाइन पर Android Test Orchestrator का इस्तेमाल करने के लिए, ये निर्देश दें ऐसा करने के लिए:

DEVICE_API_LEVEL=$(adb shell getprop ro.build.version.sdk)

FORCE_QUERYABLE_OPTION=""
if [[ $DEVICE_API_LEVEL -ge 30 ]]; then
   FORCE_QUERYABLE_OPTION="--force-queryable"
fi

# uninstall old versions
adb uninstall androidx.test.services
adb uninstall androidx.test.orchestrator

# Install the test orchestrator.
adb install $FORCE_QUERYABLE_OPTION -r path/to/m2repository/androidx/test/orchestrator/1.4.2/orchestrator-1.4.2.apk

# Install test services.
adb install $FORCE_QUERYABLE_OPTION -r path/to/m2repository/androidx/test/services/test-services/1.4.2/test-services-1.4.2.apk

# Replace "com.example.test" with the name of the package containing your tests.
# Add "-e clearPackageData true" to clear your app's data in between runs.
adb shell 'CLASSPATH=$(pm path androidx.test.services) app_process / \
 androidx.test.services.shellexecutor.ShellMain am instrument -w -e \
 targetInstrumentation com.example.test/androidx.test.runner.AndroidJUnitRunner \
 androidx.test.orchestrator/.AndroidTestOrchestrator'

जैसा कि कमांड सिंटैक्स से पता चलता है, Android Test Orchestrator को इंस्टॉल करने के बाद, उसका इस्तेमाल किया जा सकता है सकता है.

adb shell pm list instrumentation

अलग-अलग टूलचेन का इस्तेमाल करना

अगर अपने ऐप्लिकेशन की जांच करने के लिए किसी दूसरे टूलचेन का इस्तेमाल किया जाता है, तो भी Android का इस्तेमाल किया जा सकता है नीचे दिए गए चरणों को पूरा करके ऑर्केस्ट्रेटर की जांच करें:

  1. अपने ऐप्लिकेशन की बिल्ड फ़ाइल में ज़रूरी पैकेज शामिल करें.
  2. कमांड-लाइन से Android Test Orchestrator को चालू करें.

भवन निर्माण

ऑर्केस्ट्रेटर सर्विस APK को ऐसी प्रोसेस में स्टोर किया जाता है जो जिस ऐप्लिकेशन की जांच की जा रही है उस APK और उसके APK की जांच करें:

ऑर्केस्ट्रेटर की मदद से, JUnit की जांच को कंट्रोल किया जा सकता है
पहली इमेज: Android की जांच करने के लिए डिज़ाइन किए गए APK का स्ट्रक्चर.

Android Test Orchestrator, आपके टेस्ट की शुरुआत में, JUnit की जांच का डेटा इकट्ठा करता है सुइट चलता है, लेकिन फिर यह हर टेस्ट को अलग-अलग करता है. Instrumentation.

ज़्यादा जानकारी

AndroidJUnitRunner का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, एपीआई का संदर्भ देखें.

अन्य संसाधन

AndroidJUnitRunner का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, यह जानकारी देखें संसाधन.

सैंपल

  • AndroidJunitRunnerSample: जांच एनोटेशन दिखाता है, पैरामीटर वाले टेस्ट, और टेस्ट सुइट बनाना शामिल है.