जैसे-जैसे आपका ऐप्लिकेशन बढ़ता जाएगा, आपको अपने ऐप्लिकेशन के कुछ कॉम्पोनेंट को सही जगह पर रखने में मदद मिल सकती है आपके ऐप्लिकेशन की मुख्य प्रोसेस के अलावा किसी दूसरी प्रोसेस में. इनमें ऐप्लिकेशन के कॉम्पोनेंट की जांच करने के लिए गैर-डिफ़ॉल्ट प्रोसेस में, आप 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 की मदद से टेस्टिंग के लिए:
- Android फ़्रेमवर्क आपके ऐप्लिकेशन के लिए नई प्रोसेस बनाता और शुरू करता है
नेविगेशन स्ट्रक्चर. हर
Instrumentation
प्रोसेस मेंAndroidJUnitRunner
. इस चरण में, दो इंस्ट्रुमेंटेशन प्रोसेस एक-दूसरे से कम्यूनिकेट नहीं कर सकतीं अन्य. - हर
AndroidJUnitRunner
इंस्टेंस, Espresso को अपने टेस्टिंग फ़्रेमवर्क के तौर पर रजिस्टर करता है. - इसके 2 मामले
AndroidJUnitRunner
एक-दूसरे से कनेक्ट करने के लिए, हैंडशेक करें. समान समय, हरAndroidJUnitRunner
इंस्टेंस, Espresso जैसे सभी रजिस्टर किए गए क्लाइंट को उनसे जुड़े क्लाइंट से कनेक्ट करता है तुलना कर सकते हैं, ताकि ये क्लाइंट सीधे आपस में बातचीत का ज़रिया हैं. - हर
AndroidJUnitRunner
इंस्टेंस, नए-नए जोड़े गए इंस्ट्रुमेंटेशन इंस्टेंस और टेस्टिंग को लगातार ढूंढ रहा है फ़्रेमवर्क क्लाइंट के साथ काम करता है. इसके लिए, ज़रूरत पड़ने पर अतिरिक्त कम्यूनिकेशन चैनल बनाए जाते हैं.
पहली इमेज में, इस प्रोसेस का नतीजा दिखाया गया है:
![](https://developer.android.com/static/images/training/testing/multiprocess_espresso.png?hl=hi)
अन्य संसाधन
इस विषय पर ज़्यादा जानकारी के लिए, यहां दिए गए लेख पढ़ें.
- Android की टेस्टिंग सहायता के साथ, Android पर टेस्ट-ड्रिवन डेवलपमेंट लाइब्रेरी Google I/O 2017 का सेशन वीडियो, जो 36:41 बजे शुरू हुआ.