मल्टीप्रोसेस एस्प्रेसो

जैसे-जैसे आपका ऐप्लिकेशन बढ़ता जाएगा, आपको अपने ऐप्लिकेशन के कुछ कॉम्पोनेंट को सही जगह पर रखने में मदद मिल सकती है आपके ऐप्लिकेशन की मुख्य प्रोसेस के अलावा किसी दूसरी प्रोसेस में. इनमें ऐप्लिकेशन के कॉम्पोनेंट की जांच करने के लिए गैर-डिफ़ॉल्ट प्रोसेस में, आप Multiprocess Espresso की सुविधा का इस्तेमाल कर सकते हैं. यह टूल Android 8.0 (एपीआई लेवल 26) और इसके बाद के वर्शन पर उपलब्ध है. इसकी मदद से, ये काम किए जा सकते हैं अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन की आसानी से जांच करें. ये इंटरैक्शन आपके ऐप्लिकेशन की प्रोसेस को क्रॉस करते हैं और Espresso की सिंक्रोनाइज़ेशन गारंटी को बनाए रखते हुए सीमाएं तय करें.

मल्टीप्रोसेस एस्प्रेसो का इस्तेमाल करते समय, इन वर्शन और स्कोप को रखें इन बातों का ध्यान रखें:

  • आपके ऐप्लिकेशन को Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन को टारगेट करना चाहिए.
  • यह टूल, ऐप्लिकेशन के सिर्फ़ उन कॉम्पोनेंट की जांच कर सकता है जिन्हें आपने आपके ऐप्लिकेशन का पैकेज. यह बाहरी प्रोसेस की जांच नहीं कर सकता.

टूल का इस्तेमाल करना

मल्टीप्रोसेस एस्प्रेसो का इस्तेमाल करके, अपने ऐप्लिकेशन में किसी प्रोसेस की जांच करने के लिए, रेफ़रंस जोड़ें आपके ऐप्लिकेशन की build.gradle फ़ाइल में, एसप्रेसो-रिमोट आर्टफ़ैक्ट को जोड़ें:

app/build.gradle

ग्रूवी

dependencies {
    ...
    androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1'
}

Kotlin

dependencies {
    ...
    androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1')
}

आपको अपने ऐप्लिकेशन के androidTest मेनिफ़ेस्ट में, यह भी जोड़ना होगा:

  • प्रोसेस के बारे में बताने वाला <instrumentation> एलिमेंट.
  • <meta-data> एलिमेंट बताता है कि आपको Multiप्रोसेस एस्प्रेसो का इस्तेमाल करना है.

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

src/androidTest/AndroidManifest.xml

<manifest ... package="androidx.test.mytestapp.tests">
  <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" />
  <instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="androidx.test.mytestapp"
    android:targetProcesses="*">
    <meta-data
      android:name="remoteMethod"
      android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" />
  </instrumentation>
</manifest>

पिछला स्निपेट उस Android फ़्रेमवर्क के बारे में बताता है जिसकी आपको जांच करनी है हर प्रोसेस को पूरा करने में मदद मिलती है. अगर आपको अपने डेटा के सिर्फ़ एक सबसेट की जांच करनी है, तो है, तो आप इसके बजाय targetProcesses एलिमेंट:

<instrumentation
    ...
    android:targetProcesses=
            "androidx.test.mytestapp:myFirstAppProcessToTest,
             androidx.test.mytestapp:mySecondAppProcessToTest" ... />

टूल के डिज़ाइन को समझना

अपने ऐप्लिकेशन की जांच करते समय उसकी डिफ़ॉल्ट प्रोसेस को लॉन्च करते समय, हो सकता है कि आप यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करें इंटरैक्शन, जैसे कि बटन दबाने से, सेकंडरी स्कूल में कोई गतिविधि शुरू हो जाती है प्रोसेस. इसके बाद, सिस्टम क्रॉस-प्रोसेस चालू करने के लिए इन चरणों को पूरा करता है Espresso की मदद से टेस्टिंग के लिए:

  1. Android फ़्रेमवर्क आपके ऐप्लिकेशन के लिए नई प्रोसेस बनाता और शुरू करता है नेविगेशन स्ट्रक्चर. हर Instrumentation प्रोसेस में AndroidJUnitRunner. इस चरण में, दो इंस्ट्रुमेंटेशन प्रोसेस एक-दूसरे से कम्यूनिकेट नहीं कर सकतीं अन्य.
  2. हर AndroidJUnitRunner इंस्टेंस, Espresso को अपने टेस्टिंग फ़्रेमवर्क के तौर पर रजिस्टर करता है.
  3. इसके 2 मामले AndroidJUnitRunner एक-दूसरे से कनेक्ट करने के लिए, हैंडशेक करें. समान समय, हर AndroidJUnitRunner इंस्टेंस, Espresso जैसे सभी रजिस्टर किए गए क्लाइंट को उनसे जुड़े क्लाइंट से कनेक्ट करता है तुलना कर सकते हैं, ताकि ये क्लाइंट सीधे आपस में बातचीत का ज़रिया हैं.
  4. हर AndroidJUnitRunner इंस्टेंस, नए-नए जोड़े गए इंस्ट्रुमेंटेशन इंस्टेंस और टेस्टिंग को लगातार ढूंढ रहा है फ़्रेमवर्क क्लाइंट के साथ काम करता है. इसके लिए, ज़रूरत पड़ने पर अतिरिक्त कम्यूनिकेशन चैनल बनाए जाते हैं.

पहली इमेज में, इस प्रोसेस का नतीजा दिखाया गया है:

पहली इमेज. एकाधिक के बीच संचार स्थापित करना Multiप्रोसेस एस्प्रेसो का इस्तेमाल करके इंस्ट्रुमेंटेशन की प्रोसेस

अन्य संसाधन

इस विषय पर ज़्यादा जानकारी के लिए, यहां दिए गए लेख पढ़ें.