AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (13-12-2018)
यह AndroidX Test 1.1.0 का स्टेबल वर्शन है
- Core
- ऐसी गतिविधियों के लिए ActivityScenario का इस्तेमाल करना जो दूसरी गतिविधि शुरू करती हैं
AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (06-12-2018)
- Core
- नया core-ktx kotlin एक्सटेंशन आर्टफ़ैक्ट! इसमें Kotlin के साथ काम करने वाला ActivityScenario.launchActivity API शामिल है
- कस्टम इंटेंट के साथ गतिविधियां लॉन्च करने के लिए, नया ActivityScenario API
- गतिविधि का नतीजा पाने के लिए, नया ActivityScenario API
- Make ActivityScenario closeable
- Espresso
- API 28 के साथ काम करने के लिए, withResourceNameMatcher और HumanReadables में बदलाव करें.
- ReplaceTextAction के ब्यौरे को अपडेट करें, ताकि उसमें stringToBeSet शामिल हो
- Robolectric के paused looper मोड में Espresso के साथ काम करने की सुविधा.
- JUnit
- ActivityScenarioRule API, टेस्ट सेटअप और टेस्ट खत्म होने पर गतिविधि को अपने-आप लॉन्च और बंद करने के लिए
- junit-ktx का नया Kotlin एक्सटेंशन आर्टफ़ैक्ट! इसमें Kotlin के साथ काम करने वाला ActivityScenarioRule API शामिल है
- Runner
- पैकेज पाने के दौरान, -e package और -e testFile के व्यवहार को एक जैसा बनाएं
- Truth
- bool, parcelable, और parcelableAsType BundleSubject API जोड़े गए
AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (24-10-2018)
- सभी
- minSdkVersion को 14 और targetSdkVersion को 28 पर सेट करें
- Espresso
- withContentDescription को ठीक किया गया है, ताकि यह स्ट्रिंग टाइप के अलावा अन्य टाइप के साथ काम कर सके
- Robolectric पर Espresso का इस्तेमाल करने की सुविधा जोड़ी गई
- समस्या 72798625: textAllCaps चालू होने पर, Espresso ViewMatchers.withText काम नहीं करता
- मोशन इवेंट के क्रम को इंजेक्ट करने की सुविधा जोड़ी गई
- इंटेंट
- इरादों की सूची पाने के लिए, बीटा एपीआई जोड़ा गया. इसका इस्तेमाल, नई पुष्टि के साथ किया जाता है
- Runner
- झटपट ऐप्लिकेशन के लिए सहायता जोड़ना
- androidx.test.runner.AndroidJUnit4 को बंद करें और उसकी जगह androidx.test.ext.junit.runners.AndroidJUnit4 का इस्तेमाल करें
- मॉनिटर
- androidx.test.InstrumentationRegistry को बंद कर दिया गया है. अब इसकी जगह androidx.test.platform.app.InstrumentationRegistry और androidx.test.core.app.ApplicationProvider का इस्तेमाल किया जा सकता है
- AndroidTestOrchestrator
- ऑर्केस्ट्रेटर कवरेज हैंडलिंग को सिर्फ़ तब चालू करें, जब 'coverage' और 'coverageFilePath' दोनों आर्ग्युमेंट पास किए गए हों.
- डीबगर का इंतज़ार सिर्फ़ तब करें, जब -debug सेट किया गया हो. हालांकि, लिस्टिंग एटीओ टेस्ट केस के लिए ऐसा न करें. ऑर्केस्ट्रेटर को डीबग करने के लिए, नया orchestratorDebug फ़्लैग जोड़ा गया
- Core
- नया आर्टफ़ैक्ट! इसमें नए एपीआई शामिल हैं. ये एपीआई, इन चीज़ों के लिए डिवाइस पर और स्थानीय तौर पर टेस्ट करने की सुविधा देते हैं:
- कॉन्टेक्स्ट वापस पाया जा रहा है: ApplicationProvider
- गतिविधि पूरी होने की प्रोसेस (लाइफ़साइकल) को कंट्रोल करना: ActivityScenario(beta)
- MotionEvent और PackageInfo के लिए बिल्डर
- Parceables यूटिलिटी क्लास
- नया आर्टफ़ैक्ट! इसमें नए एपीआई शामिल हैं. ये एपीआई, इन चीज़ों के लिए डिवाइस पर और स्थानीय तौर पर टेस्ट करने की सुविधा देते हैं:
- Truth
- नया आर्टफ़ैक्ट! इसमें सूचना, इंटेंट, बंडल, पार्सलेबल, और मोशन इवेंट के लिए कस्टम ट्रुथ सब्जेक्ट शामिल हैं
- JUnit
- नया आर्टफ़ैक्ट! इसमें JUnit रनर क्लास androidx.test.ext.junit.runners.AndroidJUnit4 शामिल है. यह क्लास, लोकल और डिवाइस पर किए जाने वाले टेस्ट, दोनों के साथ काम करती है.
Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (2018-04-16)
- Espresso
- एपीआई में बड़ा बदलाव:
- हमें समस्या 64062890 में बताया गया था कि हम अपने सार्वजनिक एपीआई में Guava Optional का इस्तेमाल कर रहे हैं. यह हमारी ओर से हुई एक गंभीर चूक थी . इस वजह से, इस समस्या को हल करने के लिए, इस रिलीज़ में सार्वजनिक एपीआई में बदलाव किया गया है. हमने Guava Optional क्लास के चारों ओर एक रैपर बनाया है. इसका नाम EspressoOptional है. यह "android.support.test.espresso.util" नेमस्पेस के तहत आता है. Guava Optional API का इस्तेमाल करने वाले डेवलपर को, इस नए वर्शन पर अपडेट करते समय अपने इंपोर्ट और रेफ़रंस बदलने होंगे, ताकि वे EspressoOptional का इस्तेमाल कर सकें. इस वजह से हुई परेशानी के लिए हमें खेद है.
- गड़बड़ियों को रोकने के लिए, onView() और onData() एपीआई को अब @CheckReturnValue के तौर पर मार्क किया गया है
- espresso-core की POM फ़ाइल में बदलाव किया गया है, ताकि "rules" डिपेंडेंसी को पुल न किया जा सके. इसके बजाय, espresso-intents की POM फ़ाइल इसे पुल करेगी. डेवलपर के लिए यह बदलाव, नोऑप होना चाहिए. ऐसा इसलिए, क्योंकि espresso-core के बिना espresso-intents का इस्तेमाल नहीं किया जा सकता.
- समस्या 65486414: Espresso में guava डिपेंडेंसी मौजूद नहीं है
- समस्या 65576174: Espresso IdlingResourceRegistry.sync की वजह से दूसरा टेस्ट फ़ेल हो जाता है
- समस्या 65568629: Espresso.onIdle, IdlingRegistry का इस्तेमाल नहीं कर रहा है
- समस्या 69333598: android library module में espresso 3.0.1, play-services-auth:11.6.0 के साथ काम नहीं करता.
- समस्या 64062890: AdapterViewProtocol इंटरफ़ेस से दिखने वाला इंटरनल वैकल्पिक टाइप
- समस्या 64091847: Espresso 3.0.0 को टेस्ट रनर पर निर्भर नहीं होना चाहिए
- समस्या 73722050: espresso-contrib 3.0.2-alpha1, android.arch.{lifecycle/core} क्लास को पैकेज करता है
- एपीआई में बड़ा बदलाव:
- Espresso-remote
- यह एक नया आर्टफ़ैक्ट है. हमने Espresso की मल्टी प्रोसेस फ़ंक्शनैलिटी को espresso-core आर्टफ़ैक्ट से अलग कर दिया है. यह ज़्यादा बेहतर है. इससे espresso-core के कुल साइज़ और तरीके की संख्या में काफ़ी कमी आनी चाहिए.
- Runner
- अगर बाइंडर लेन-देन के लिए स्टैक ट्रेस बहुत बड़ा है, तो उसे छोटा करें. AJUR को Binder IPC के ज़रिए, AM को गड़बड़ियों की जानकारी देनी होती है. इसलिए, हमें यह पक्का करना होगा कि हम Binder लेन-देन की सीमा से ज़्यादा डेटा न भेजें. यह सीमा, हर प्रोसेस के लिए 1 एमबी है.
- समस्या 65828576: @Ignore एनोटेशन वाली क्लास में टेस्ट चलाने पर TestRequestBuilder क्रैश हो जाता है
- समस्या 37057596: हम @BeforeClass में होने वाली गड़बड़ियों को ठीक नहीं करते
- नियम
- लाइफ़साइकल में बदलाव करने के बाद, टेस्ट की जा रही ऐक्टिविटी पर रेफ़रंस रिलीज़ करना न भूलें. जांच के दौरान, #getActivity() से मिले रेफ़रंस का इस्तेमाल करके, गतिविधि में सीधे तौर पर बदलाव किया जा सकता है. अगर गतिविधि खत्म हो जाती है और उसे फिर से लॉन्च किया जाता है, तो #getActivity() से मिला रेफ़रंस अब हमेशा गतिविधि के मौजूदा इंस्टेंस की ओर इशारा करता है.
- समस्या 64389280: GrantPermissionRule, WRITE_EXTERNAL_STORAGE की अनुमति नहीं देता
- समस्या 37065965: ओरिएंटेशन बदलने के बाद, ActivityTestRule गतिविधि की जानकारी लीक करता है
- समस्या 75254050: कॉन्फ़िगरेशन में बदलाव के दौरान, ActivityTestRule, ऐक्टिविटी इंस्टेंस को अपडेट नहीं करता है
- समस्या 64464625: ऐक्टिविटी के finish() मेथड में यूज़र इंटरफ़ेस (यूआई) से जुड़ा काम नहीं किया जा सकता
- AndroidTestOrchestrator
- दी गई जगह पर कवरेज फ़ाइलें जनरेट करने के लिए,
-e coverage true -e coverageFilePath /sdcard/foo/फ़्लैग पास करें. ऐप्लिकेशन के पास दी गई जगह पर लिखने की अनुमति होनी चाहिए. कवरेज फ़ाइल के नाम रखने का तरीका अब ऐसा दिखता हैcom.foo.Class#method1.ec. ध्यान दें कि इसका इस्तेमाल सिर्फ़ आइसोलेटेड मोड में किया जा सकता है. साथ ही, इसका इस्तेमाल AndroidJUnitRunner केcoverageFileफ़्लैग के साथ नहीं किया जा सकता. ऐसा इसलिए होता है, क्योंकि जनरेट की गई कवरेज फ़ाइलें एक-दूसरे को बदल देती हैं. - अगर आपको ऑर्केस्ट्रेटर को टेस्ट इनवोकेशन के बीच
pm clear context.getPackageName()औरpm clear targetContext.getPackageName()कमांड चलाने की अनुमति देनी है, तो-e clearPackageDataफ़्लैग पास करें. ध्यान दें कि क्लियर कमांड में, टेस्ट किए जा रहे ऐप्लिकेशन का कॉन्टेक्स्ट होता है. - ठीक किया गया - जब कोई खाली टेस्ट चलाया जाता है, तो टारगेट के अंदर कोई @Test नहीं होता. ऐसे में, टेस्ट का नतीजा लेगसी मोड से अलग होता है.
- समस्या 72758547: Test Orchestrator की वजह से, Jacoco कवरेज डेटा पूरा नहीं होता. इसमें सिर्फ़ आखिरी टेस्ट रन का डेटा होता है
- समस्या 67916042: Android Test Orchestrator : Execution stopped on Process crash due to OutOfMemory
- समस्या 77752735: TransactionTooLargeException की वजह से Orchestrator क्रैश हो जाता है
- समस्या 77549481: हर टेस्ट के बाद, टेस्ट ऑर्केस्ट्रेटर को "pm clear" चलाना चाहिए
- दी गई जगह पर कवरेज फ़ाइलें जनरेट करने के लिए,
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)
Espresso
Intentsमें अब कॉल किया जा सकने वाला रिस्पॉन्स है. इससे टेस्ट, फ़ायर किए गए इंटेंट को कैप्चर करने के बाद औरInstrumentation.ActivityResultऑब्जेक्ट को वापस भेजने से पहले लागू किए जा सकते हैं.
Runner
उन उपयोगकर्ताओं के लिए मॉनिटर मेवन आर्टफ़ैक्ट
com.android.support.test:monitor:<version>को अलग करें जिन्हें टेस्ट रनिंग और JUnit सुविधाओं के बिनाMonitoringInstrumentationकी ज़रूरत है.com.android.support.test:runner:<version>का इस्तेमाल करने पर, सब कुछ उम्मीद के मुताबिक काम करता है. इसकी वजह यह है कि Gradle,monitorमॉड्यूल कोrunnerमॉड्यूल की डिपेंडेंसी के तौर पर अपने-आप पुल कर लेता है.फ़्लैग
newRunListenerOrderModeजोड़ा गया.trueहोने पर, उपयोगकर्ता की ओर से तय किए गए लिसनर, डिफ़ॉल्ट लिसनर से पहले चलते हैं. (हमें उम्मीद है कि यह व्यवहार आखिर में डिफ़ॉल्ट व्यवहार बन जाएगा.)समस्या 65828576:
@Ignoreएनोटेशन (टेस्ट रनिंग या JUnit सुविधाओं के बिना स्टैंडअलोन) वाली क्लास में टेस्ट चलाने परTestRequestBuilderक्रैश हो जाता है.
AndroidTestOrchestrator
- अब यह खाली टेस्ट को उसी तरह से हैंडल करता है जिस तरह से नॉन-ऑर्केस्ट्रेटेड
AndroidJUnitRunnerकरता है. - Orchestrator अब
AndroidJUnitRunnerसे मिलने वाले स्टैंडर्ड आउटपुट को मैनेज कर सकता है.
- अब यह खाली टेस्ट को उसी तरह से हैंडल करता है जिस तरह से नॉन-ऑर्केस्ट्रेटेड
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28-08-2017)
Espresso
- वीएम से स्टेप डिबगर अटैच होने पर,
onTimeout()को बंद करने के लिएIdlingPolicyविकल्प जोड़ा गया. - समस्याएं 64024656, 64247586, और 64525881: क्लास लोड न होने पर, फ़ेल होने की रिपोर्ट न करें. ऐसा तब तक न करें, जब तक कोई उपयोगकर्ता
-eक्लास रनर आर्ग्युमेंट शामिल करके, कुछ खास क्लास लोड न कर रहा हो. - समस्या 64877246: सोर्स JAR फ़ाइल में मौजूद नहीं हैं.
- वीएम से स्टेप डिबगर अटैच होने पर,
Runner
- आसान
ShardingFilterलॉजिक. - समस्या 65025743:
@RequiresDeviceफ़िल्टर अब FTL एम्युलेटर के साथ काम करता है.
- आसान
AndroidTestOrchestrator
- रिपोर्ट जनरेट न होने की डुप्लीकेट शिकायतें न करें. जांच की प्रोसेस फ़ेल होने के बाद क्रैश हो जाती है. अब जांच के लिए सिर्फ़ एक बार फ़ेल होने की जानकारी दी जाती है.
- ऑर्केस्ट्रेटर के लिए Javadoc ठीक किया गया.
- अगर रिमोट प्रोसेस क्रैश हो जाती है, तो अब जांचों को 'छूट गई' के तौर पर दिखाया जाता है.
- अब अनदेखे किए गए टेस्ट केस मैनेज करता है.
- अब फ़ुटर से अनदेखे किए गए टेस्ट केस हटा दिए गए हैं, ताकि नतीजे लेगसी वर्शन के नतीजों से मेल खाएं.
- रनटाइम की अनुमतियों से जुड़ी समस्याएं ठीक की गईं. अब Android 7.0 (एपीआई लेवल 24) और इसके बाद के वर्शन पर, टेस्ट रिपोर्ट को एसडी कार्ड में सेव किया जाता है.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25-07-2017, सूचना)
नुकसान पहुंचा सकने वाले बदलाव
- सभी आर्टफ़ैक्ट
- एपीआई लेवल 15 से पहले के वर्शन के लिए सहायता बंद कर दी गई है. हालांकि, कम से कम एसडीके अब भी एपीआई लेवल 9 पर काम करता है, ताकि उपयोगकर्ताओं को अपग्रेड करने के लिए समय मिल सके
- Espresso
- बंद की गई
android.support.test.espresso.contrib.CountingIdlingResourceक्लास को मिटा दिया गया है और उसेandroid.support.test.espresso.idling.CountingIdlingResourceमें ले जाया गया हैregisterIdlingResources()के बजायgetInstance().register()का इस्तेमाल करें
- Guava को अब jarjar'd करके किसी दूसरे "internal" नेमस्पेस में ले जाया गया है. अगर गलती से Espresso नेमस्पेस के ज़रिए Guava API का इस्तेमाल किया जा रहा है, तो आपको समस्याएं दिख सकती हैं
- गुआवा के शेड (
.core.deps.guava.) के किसी भी रेफ़रंस को हटाएं - Support Library के वर्शन को 25.4.0 या इसके बाद के वर्शन पर अपग्रेड करें
- गुआवा के शेड (
- बंद की गई
पहले से मालूम समस्याएं
- AndroidTestOrchestrator
- फ़िलहाल,
-e numShardsऔर-e shardIndexरनर आर्ग्युमेंट काम नहीं करते - फ़िलहाल, पैरामीटर वाले टेस्ट काम नहीं करते
- फ़िलहाल,
नई सुविधाएं
- Espresso
- एपीआई 26 पर
espresso-coreऔरespresso-webके लिए, मल्टीप्रोसेस एस्प्रेसो की नई सुविधा उपलब्ध है. हालांकि, नहींespresso-contrib - नया लाइटवेट
IdlingRegistryएपीआईcom.android.support.test.espresso:espresso-idling-resource:3.0.0के हिस्से के तौर पर पब्लिश किया गया- इस्तेमाल न किए जाने वाले तरीके:
Executorsके साथ डेटा सिंक करने के लिए नया एपीआई- नया Maven आर्टफ़ैक्ट:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - इसमें
IdlingScheduledThreadPoolExecutorऔरIdlingThreadPoolExecutorक्लास शामिल हैं
- नया Maven आर्टफ़ैक्ट:
- नेटवर्क के अनुरोधों और जवाबों को सिंक करने में मदद करने के लिए नया एपीआई.
- नया Maven आर्टफ़ैक्ट:
com.android.support.test.espresso.idling:idling-net:3.0.0 - इसमें
UriIdlingResourceक्लास शामिल है
- नया Maven आर्टफ़ैक्ट:
- नए
espresso-coreव्यू मैचर:hasBackground()Viewऑब्जेक्ट के बैकग्राउंड ड्रॉएबल रिसॉर्स से मेल खाता हैhasTextColor()TextViewऑब्जेक्ट के रंग से मेल खाता है
- व्यू ऐक्शन के नए तरीके:
scrollTo()को बेहतर बनाया गया है, ताकि यहListViewके डिसेंडेंट के साथ काम कर सकेrepeatedlyUntil()– यह किसी व्यू पर तब तकViewActionकार्रवाई करता है, जब तक व्यू,ViewMatchersसे मेल नहीं खा जाता
- एस्प्रेसो बनाने के नए तरीके:
pressBackUnconditionally()– यहpressBack()की तरह ही है, लेकिन Espresso नेविगेट करते समय कोई अपवाद नहीं दिखाताnoActivity()– इससे किसी गतिविधि के पूरा होने का इंतज़ार करने की ज़रूरत नहीं पड़ती. इसके बाद,ViewActionयाViewAssertionको तुरंत शुरू किया जा सकता हैonIdle()– जब तक ऐप्लिकेशन का इस्तेमाल नहीं किया जाता, तब तक मुख्य थ्रेड को लूप करता हैonIdle(Callable<T>)– यहonIdle()की तरह ही है. हालांकि, यहCallableको एक अतिरिक्त पैरामीटर के तौर पर लेता है. यह पैरामीटर, ऐप्लिकेशन के निष्क्रिय होने के बाद लागू होता है
webScrollIntoView()– नयाespresso-webऐटम, जिसकी मदद सेWebViewमें स्क्रोल किया जा सकता है
- एपीआई 26 पर
- Runner
-
InterceptingActivityFactoryऔरSingleActivityFactory– इससे बाहरी दुनिया से अलग किसी ऐक्टिविटी की जांच करने की सुविधा मिलती है. इसके लिए,startService()औरsendBroadcast()जैसे तरीकों को बदलें -
AndroidJUnitRunnerके साथ JUnitParams का इस्तेमाल करने की सुविधा जोड़ें -
कोर टेस्ट रनर लेवल पर
@UiThreadTestको हैंडल करना शुरू करें और@UiThreadTestRuleको बंद करें – इससे@UiThreadTestएनोटेशन का इस्तेमाल सीधे तौर पर उन तरीकों पर किया जा सकता है जिन्हें@Beforeऔर@Afterके साथ एनोटेट किया गया है -
@SdkSupressएनोटेशन अबmaxSdkVersionवैल्यू के साथ काम करता है (समस्या 37067792) -
-e classLoader– रनर आर्ग्युमेंट का इस्तेमाल करके, क्लास लोडर पास करने की सुविधा उपलब्ध कराई गई है -
-e filter– JUnit के कस्टम फ़िल्टर के लिए सहायता जोड़ें, ताकि उन्हें रनर आर्ग्युमेंट का इस्तेमाल करके तय किया जा सके -
-e runnerBuilder– इसकी मदद से डेवलपर,RunnerBuilderको लागू करने के अपने तरीके बता सकते हैं. इससे यह तय किया जा सकता है कि किसी क्लास के लिए,RunnerBuilderको चलाया जा सकता है या नहीं और अगर चलाया जा सकता है, तो कैसे
-
- नियम
ProviderTestRule–ContentProviderऑब्जेक्ट की जांच करने के लिए नया एपीआईgetActivityResult()औरActivityResultMatchers– किसी गतिविधि के नतीजे को वापस पाने के लिए नया एपीआई. इस एपीआई नेsetResult()को कॉल किया है
- AndroidTestOrchestrator
- Android Test Orchestrator, टेस्ट इकट्ठा करने और उन्हें चलाने का नया तरीका उपलब्ध कराता है. इसमें सही तरीके से टेस्ट करने और उन्हें अलग-अलग चलाने पर ज़ोर दिया जाता है. ऑर्केस्ट्रेटर, इंस्ट्रूमेंटेशन की एक स्वतंत्र प्रोसेस है. यह हर टेस्ट के लिए, इंस्ट्रूमेंटेशन रनर की एक प्रोसेस शुरू करता है और नतीजे इकट्ठा करता है.
- ऐप्लिकेशन क्रैश होने पर, रनर इंस्ट्रूमेंटेशन बंद हो जाता है, लेकिन ऑर्केस्ट्रेटर बंद नहीं होता. इससे आपकी टेस्ट सुइट जारी रहती है
- ऑर्केस्ट्रेटर APK इंस्टॉल करना ज़रूरी है –
'com.android.support.test:orchestrator:1.0.0' - वर्शन 1.0 में सिर्फ़ कमांड-लाइन इंटरफ़ेस है. इसे Android Studio और Firebase Test Labs के साथ इंटिग्रेट करने की योजना है
- Android Test Orchestrator, टेस्ट इकट्ठा करने और उन्हें चलाने का नया तरीका उपलब्ध कराता है. इसमें सही तरीके से टेस्ट करने और उन्हें अलग-अलग चलाने पर ज़ोर दिया जाता है. ऑर्केस्ट्रेटर, इंस्ट्रूमेंटेशन की एक स्वतंत्र प्रोसेस है. यह हर टेस्ट के लिए, इंस्ट्रूमेंटेशन रनर की एक प्रोसेस शुरू करता है और नतीजे इकट्ठा करता है.
गड़बड़ियां ठीक की गईं
- Espresso
- रूट व्यू के सिंक्रनाइज़ेशन को बेहतर बनाया गया है, ताकि फ़्लैकीनेस को काफ़ी हद तक कम किया जा सके
IdlingResourceRegistryमें मौजूद डेटा के खराब होने की समस्या ठीक करनाIdlingResourceऑब्जेक्ट के साथ बेहतर सिंक्रनाइज़ेशन- समस्या 37132680: Espresso, अगली कार्रवाई करने से पहले डायलॉग बनाने की प्रोसेस पूरी होने का इंतज़ार नहीं करता
- समस्या 37103280: Espresso को ProGuard के उपभोक्ता नियमों को शिप करना चाहिए, ताकि उपभोक्ताओं को उन्हें जोड़ने की ज़रूरत न पड़े
- समस्या 37094726: Espresso Intents में, ऐप्लिकेशन का गैर-ज़रूरी लेबल मौजूद है
- समस्या 37093953: Espresso: No available check for null/empty error text
- समस्या 37071776:
espresso-core, Guava की.pomफ़ाइलें एम्बेड करता है - समस्या 37062612: NPE in
release() - समस्या 37063389: Guava और
espresso-webकोandroidTestडिपेंडेंसी के तौर पर इस्तेमाल करने पर, कंपाइल नहीं होता - समस्या 37070533: Android डिज़ाइन सपोर्ट लाइब्रेरी में
NavigationViewके लिए सहायता जोड़ें
- Runner
-
@Test(timeout = 123)के साथ@UiThreadTestका इस्तेमाल करने की सुविधा से जुड़ी समस्या ठीक की गई -e notClassरनर आर्ग को ठीक किया गया- JUnit3 और JUnit4 टेस्ट सुइट के साथ-साथ
ParameterizedऔरEnclosedरनर के साथ काम करने के लिए,-e logको ठीक किया गया - समस्या 37663530: हर टेस्ट के तरीके से पहले और बाद में, सभी गतिविधियों के पूरा होने का इंतज़ार करें
- समस्या 37132680: Espresso, अगली कार्रवाई करने से पहले डायलॉग बॉक्स के बनने का इंतज़ार नहीं करता
-
समस्या 37123213:
@RequiresDeviceको x86_64 ABI पर अनदेखा किया गया -
समस्या 37101485: मेनिफ़ेस्ट में दिए गए
AndroidJUnitRunnerके कुछ आर्ग्युमेंट, जैसे कि टेस्ट का साइज़, एनोटेशन, और डीबग करने की सुविधा को अनदेखा किया जाता है - समस्या 37082857: स्टैटिक ऑब्जेक्ट पर Espresso semi-parallel टेस्ट एक्ज़ीक्यूशन पूरा नहीं हो सका
-
समस्या 37063396:
ProviderTestCase2के साथ कॉन्टेक्स्ट शुरू नहीं किया गया (इससेNullPointerExceptionहोता है)
-
- नियम
ActivityTestRuleलाइफ़साइकल को ठीक किया गया है, ताकि रेगुलर और लेज़ीActivityTestRuleइनिशियलाइज़ेशन के दौरान एक जैसा व्यवहार हो- समस्या 37079943: फिर से लिंक करने की अनुमति देने के लिए,
ServiceTestRuleठीक करें - समस्या 37109342:
getActivityResult()औरActivityResultMatchersको जोड़ें
- UiAutomator
setUiAutomationFlags()for use withUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES– this allowsUiAutomatorto be used while other accessibility services are running- समस्या 37082813:
setText()खालीEditTextऑब्जेक्ट पर, एपीआई लेवल 19 या इससे पहले के वर्शन मेंNullPointerExceptionथ्रो करता है
अन्य ज़रूरी बदलाव
- बाइनरी अब Google मेवन के ज़रिए पब्लिश की जाती हैं
espresso-coreऔरespresso-webJAR फ़ाइलों का साइज़ कम किया गया – एम्बेड की गई डिपेंडेंसी पर अब ProGuard लागू किया गया है- सभी
.aarफ़ाइलों में अब ProGuard के नियम शामिल हैं - रिलीज़ किए गए आर्टफ़ैक्ट में
proguard_library.cfgफ़ाइलें जोड़ना Tapperइंटरफ़ेस में,sendTap()का नया वर्शन उपलब्ध है
बाहरी योगदान
- Espresso
- Runner
- नियम
Espresso 2.2.2, Runner/Rules 0.5 (22-02-2016, साइलेंट रिलीज़)
नई सुविधाएं
- espresso
- समस्या 194253: Android सपोर्ट डिज़ाइन लाइब्रेरी में NavigationView के लिए सहायता जोड़ें
- चालू किए गए ऐनिमेशन और ट्रांज़िशन की जांच की गई
- नया
ViewMatcherएपीआई:withResourceName()
गड़बड़ियां ठीक की गईं
- espresso
- समस्या 195331: espresso-core, guava की pom फ़ाइलें एम्बेड करता है
- आईडलिंग रिसॉर्स को गिनने की सुविधा को espresso-contrib से बाहर ले जाया गया
- rules
- समस्या 187249:
Intents.release()में NPE
- समस्या 187249:
- रनर
- समस्या 196066:
AndroidJUnitRunnerमें मौजूद-e log trueआर्ग्युमेंट, असल टेस्ट को बायपास नहीं करता - रनर के
onCreate()में डीबगर के लिए इंतज़ार करें - टेस्ट के लिए एनोटेशन की सुविधा को प्लैटफ़ॉर्म से हटाकर, एटीएसएल में जोड़ा गया
- JSBridge के बारे में स्टैक ट्रेस डंप को हटाया गया
AndroidAnnotatedBuilderठीक की गई
- समस्या 196066:
अन्य ज़रूरी बदलाव
ActivityTestRule,UiThreadTestRule,IntentsTestRule, औरServiceTestRuleअब बीटा वर्शन में नहीं हैं- कोड को एक जैसा फ़ॉर्मैट करने के लिए, कोड स्टाइल सेटिंग वाली फ़ाइल जोड़ना
Espresso 2.2.1, Runner/Rules 0.4 (15-09-2015)
नई सुविधाएं
- rules
IntentsTestRuleके साथ पूरी तरह से काम करने वाला नयाIntentsTestRuleकंस्ट्रक्टर जोड़ा गयाActivityTestRule
- runner
- एपीआई लेवल 15 और इससे पहले के वर्शन के लिए, मल्टीडेक्स इंस्टॉलेशन का खास मामला जोड़ा गया
- क्लास और पैकेज में, बाहर रखने के लिए फ़िल्टर जोड़े गए:
- किसी क्लास में मौजूद टेस्ट को छोड़कर, सभी टेस्ट चलाना:
adb shell am instrument -w -e notClass com.android.foo.FooTest - एक टेस्ट को छोड़कर बाकी सभी टेस्ट चलाना:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo - किसी पैकेज को छोड़कर, सभी टेस्ट चलाना:
adb shell am instrument -w -e notPackage com.android.foo.bar
- किसी क्लास में मौजूद टेस्ट को छोड़कर, सभी टेस्ट चलाना:
बाहरी योगदान
- espresso
- 157911:
EditTextऑब्जेक्ट पर इनपुट टाइप के लिए व्यू मैच करने वाला फ़ंक्शन जोड़ें - 157912:
EditTextऑब्जेक्ट पर गड़बड़ी वाले टेक्स्ट को मैच करने के लिए, व्यू मैच करने वाला टूल जोड़ें - 150674:
DrawerActionsमें, किसी भी ग्रैविटी वाले ड्रॉअर के लिए सहायता जोड़ी गई - 150744:
DrawerActionsअब लीक नहीं होताparentListener - 153303: "is the drawer open or closed" checks पर ग्रेविटी तय की गई
- 157910:
DrawerLayoutखोलने और बंद करने की कार्रवाई वाली फ़ैक्ट्रियां जोड़ें
- 157911:
गड़बड़ियां ठीक की गईं
- espresso
ViewActions.closeSoftKeyboard()अब यह पक्का करता है कि सॉफ़्ट कीबोर्ड पूरी तरह से हट गया हो- एपीआई लेवल 21 और इसके बाद के वर्शन पर, Espresso के
Espresso.pressBack()तरीके के साथ सिंक्रनाइज़ेशन की समस्या ठीक की गई - एपीआई लेवल 23 पर, कीबोर्ड बंद होने के ऐनिमेशन के लिए सिंक करने की सुविधा ठीक की गई
- rules
- एपीआई लेवल 23 पर
ServiceTestRuleको ठीक किया गया है.startService()को हमेशाIntentके साथ कॉल किया जाना चाहिए
- एपीआई लेवल 23 पर
- runner
- Gradle
JaCoCoके काम न करने वाले सपोर्ट को ठीक किया गया - टेस्ट शार्डिंग की सुविधा काम न करने की समस्या ठीक की गई
JUnit3स्टाइल टेस्ट के टाइमआउट के बाद, टेस्ट रनर में अलग-अलग स्थितियों को ठीक किया गया
- Gradle
अन्य ज़रूरी बदलाव
- Javadoc से जुड़ी गड़बड़ियां ठीक की गईं और गड़बड़ी के मैसेज को बेहतर बनाया गया
- तरीके के फ़िल्टर का इस्तेमाल करते समय,
suite()तरीकों को अनदेखा करें और init गड़बड़ियों को अनदेखा न करें
Espresso 2.2 / ATSL 0.3 (09-06-2015)
नई सुविधाएं
- espresso-web 2.2
- नई
WebViewसुविधा
- नई
- espresso-core 2.2
- dagger v2 का इस्तेमाल करने के लिए माइग्रेट किया गया
- hamcrest v1.3 का इस्तेमाल करने के लिए माइग्रेट किया गया
- espresso-contrib 2.2
- सुलभता की जांच
DrawerActionsग्रेविटी सपोर्ट
- rules 0.3
DisableOnAndroidDebugनियम
- runner 0.3
- JUnit v4.10 से JUnit v4.12 में अपग्रेड करना
- Hamcrest v1.3 का इस्तेमाल करने के लिए माइग्रेट किया गया
गड़बड़ियां ठीक की गईं
DrawerActionsलीक होने की समस्या ठीक की गईParentListener- अब यह माना जाता है कि अनुमान के सही न होने पर, टेस्ट को फ़ेल होने के बजाय अनदेखा किया जाएगा
MonitoringInstrumentationके ज़रिए, गतिविधि के इंस्टेंस लीक होने की समस्या को ठीक किया गया है. यह समस्याExecutorServiceके ज़रिए हो रही थी- उन गतिविधियों के लिए ठीक किया गया है जो रुकी हुई स्थिति में अटकी हुई थीं
- अगर कोई स्क्रोल इवेंट जनरेट नहीं हुआ है, तो
Until.scrollFinished()को अपडेट करके 'सही' पर सेट करें.UiObject2#setText()में संभावित एनपीई से सुरक्षा पाएं.
Espresso 2.1, Test Runner/Rules 0.2, और UIAutomator 2.1.0 (21-04-2015)
नुकसान पहुंचा सकने वाले बदलाव
- टेस्ट रनर आर्टफ़ैक्ट को दो हिस्सों में बांटा गया है. साथ ही, इसका नाम
com.android.support.test:testing-support-lib:0.1से बदलकरcom.android.support.test:runner:0.2औरcom.android.support.test:rules:0.2कर दिया गया है.
नई सुविधाएं
- espresso-intents: यह Mockito जैसा एपीआई है. यह टेस्ट ऑथर को आउटगोइंग इंटेंट की पुष्टि करने और स्टब करने की अनुमति देकर, इंटर-ऐक्टिविटी की हर्मेटिक टेस्टिंग को चालू करता है
IntentsTestRule: यहActivityTestRuleको बढ़ाता है. साथ ही, फ़ंक्शनल यूज़र इंटरफ़ेस (यूआई) टेस्ट में Espresso-Intents को शुरू करता है और रिलीज़ करता है
- espresso-core
ViewActions: कार्रवाइयां करने से पहले, ग्लोबल असर्शन चलाने की सुविधा जोड़ी गई है. यह उन अन्य फ़्रेमवर्क के लिए फ़ायदेमंद है जो Espresso के ऊपर बनाए गए हैं. इससे मौजूदा Espresso टेस्ट सुइट के एक्ज़ीक्यूट होने के दौरान, व्यू हैरारकी की स्थिति की पुष्टि की जा सकती हैViewMatchers.withContentDescription()resIdओवरलोड
- rules
ActivityTestRule: इस नियम से, किसी एक गतिविधि की फ़ंक्शनल टेस्टिंग की जाती हैUiThreadRuleऔरUiThreadTestएनोटेशन: इस नियम के तहत,UiThreadTestएनोटेशन वाले टेस्ट मेथड को ऐप्लिकेशन के मुख्य थ्रेड (या यूज़र इंटरफ़ेस थ्रेड) पर एक्ज़ीक्यूट किया जा सकता हैServiceTestRule: यह नियम, किसी सेवा की फ़ंक्शनल टेस्टिंग की सुविधा देता है
- रनर
ApplicationLifecycleCallback: ऐप्लिकेशन के लाइफ़साइकल इवेंट को मॉनिटर करने के लिए कॉलबैक- अब सभी रनर आर्ग्युमेंट को Android मेनिफ़ेस्ट फ़ाइल में भी बताया जा सकता है. इसके लिए,
<meta-data>टैग का इस्तेमाल करें
- UIAutomator
UiDevice.dumpWindowHierarchy()अबFileयाOutputStreamस्वीकार कर सकता है
गड़बड़ियां ठीक की गईं
- espresso
- कर्सर मैच करने वाला फ़ंक्शन अब
falseदिखाता है. ऐसा तब होता है, जब कॉलम नहीं मिलता है, ताकि Hamcrest अगले कर्सर पर जा सके PreferenceMatcherswithTitleके साथNullPointerExceptionअब नहीं दिखता- आइडलिंग रिसॉर्स को अनरजिस्टर करने पर, Espresso को अब यह नहीं लगता कि हमारे पास आइडलिंग रिसॉर्स व्यस्त हैं
- Espresso Contrib इस्तेमाल करने वाले लोगों के लिए, सहायता से जुड़ी एनोटेशन सुविधा का अपडेट किया गया वर्शन
- कर्सर मैच करने वाला फ़ंक्शन अब
- रनर
AndroidJUnit4अब उन टेस्ट को स्किप कर देता है जिनके अनुमान सही नहीं होते
- UIAutomator
StaleObjectExceptionको रोकने के लिए वॉचर चलाएं
अन्य ज़रूरी बदलाव
- जब लैटिन के अलावा किसी अन्य भाषा की स्ट्रिंग का इस्तेमाल करके टाइप टेक्स्ट नहीं किया जा सकता, तब बेहतर गड़बड़ी का मैसेज जोड़ें
UIAutomator 2.0 (12-03-2015)
UI Automator अब Android Instrumentation पर आधारित है. साथ ही, ./gradlew connectedCheck कमांड का इस्तेमाल करके, टेस्ट बनाए और चलाए जा सकते हैं.
Espresso वर्शन 2.0, Test Runner 0.1 (रिलीज़ होने की तारीख: 19-12-2014)
नुकसान पहुंचा सकने वाले बदलाव
- Espresso को नए नेमस्पेस में ले जाया गया है. यह
android.support.test.espressoसे बदलकरandroid.support.test.espressoहो गया है - Espresso के आर्टफ़ैक्ट का नाम बदलकर
- कर दिया गया है
espresso-1.1.jarअबespresso-core-release-2.0.jarहो गया हैIdlingResourceइंटरफ़ेस को एक अलग लाइब्रेरी में ले जाया गया है:espresso-idling-resource-release-2.0.jarCountingIdlingResourceअबespresso-contrib-release-2.0.jarमें मौजूद है (जैसा कि हमेशा होना चाहिए था)
- गुआवा डिपेंडेंसी (ज़रूरी नहीं) को सार्वजनिक एपीआई से हटा दिया गया है, ताकि गुआवा डिपेंडेंसी को फिर से पैकेज किया जा सके और DEX कोलिज़न (डेवलपमेंट में आने वाली एक बड़ी समस्या) से बचा जा सके. इन तरीकों पर असर पड़ा है:
ViewAssertion.check()HumanReadables.getViewHierarchyErrorMessage()
नई सुविधाएं
- कार्रवाइयां
ViewActionsreplaceText()openLink()- ऊपर और नीचे की ओर स्वाइप करें
- espresso-contrib
RecyclerViewActions: यह कुकी,RecyclerViewsके साथ होने वाले इंटरैक्शन को मैनेज करती हैPickerActions: यह कुकी,DateऔरTimeपिकर के साथ इंटरैक्शन को मैनेज करती है
- Matchers
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()withSpinnerText()withHint()isSelected()hasLinks()
LayoutMatchers: i18n से जुड़ी लेआउट टेस्टिंग के लिए मैच करने वाले फ़ंक्शनCursorMatchers:Cursorऑब्जेक्ट के लिए मैच करने वालों का कलेक्शन
- दावे
PositionAssertions, जिसमेंisLeftOf()औरisAbove()शामिल हैं: स्क्रीन पर एलिमेंट की जगह की जांच करने के लिए,ViewAssertionsका कलेक्शनLayoutAssertions: i18n से जुड़ी लेआउट टेस्टिंग के लिए दावे
- टेस्ट ऐप्लिकेशन: कई नई सैंपल गतिविधियां/टेस्ट
- अन्य
Espresso.unregisterIdlingResources()औरEspresso.getIdlingResources():IdlingResourcesके साथ काम करने के लिए ज़्यादा विकल्प उपलब्ध कराता हैViewInteraction.withFailureHandler():onView()से फ़ेल होने वाले हैंडलर को बदला जा सकता हैCursorAdaptersकी मदद से,AdapterViewsके लिएonData()की सुविधा
गड़बड़ियां ठीक की गईं
ViewMatchers.isDisplayed()उन व्यू से मेल खाता है जो पूरी स्क्रीन पर दिखते हैं. हालांकि, अब ये 90% से कम नहीं दिखते- स्वाइप करने पर कॉल करने की सुविधा का इस्तेमाल करने से, अब
DrawerActions.openDrawer()नहीं मिलता है बल्किIdlingResourceTimeoutExceptionमिलता है
अन्य ज़रूरी बदलाव
- Maven से Gradle का इस्तेमाल शुरू किया गया
- Espresso की डिपेंडेंसी (Guava, Dagger, Hamcrest) को DEX टकराव से बचने के लिए हटा दिया गया है
- इस कुकी को बदला गया है, ताकि आइडलिंग रिसॉर्स को रजिस्टर और अनरजिस्टर करते समय, यह कुकी 'सफल' या 'असफल' स्टेटस दिखा सके
- Lollipop के साथ काम करता है: वर्शन से जुड़े बदलावों के लिए, इंटरफ़ेस के पीछे
message.recycle()रखें - टारगेट SDK टूल का लेवल 21 पर स्विच किया गया – इससे ज़्यादातर टेस्ट ऐप्लिकेशन पर असर पड़ता है
वर्शन 1.1 (रिलीज़ की तारीख: 08-01-2014)
एस्प्रेसो
- नई
swipeLeftऔरswipeRightViewActions - एक साथ कई विंडो इस्तेमाल करने की सुविधा: यह एक ऐडवांस सुविधा है. इसकी मदद से, उस टारगेट विंडो को चुना जा सकता है जिस पर Espresso को कार्रवाई करनी है
TypeTextActionमें सुधार: इससे पहले से फ़ोकस की गई व्यू में टेक्स्ट टाइप किया जा सकता है. इससे टेक्स्ट जोड़ना आसान हो जाता है- कई गड़बड़ियां ठीक की गईं
Espresso Contrib लाइब्रेरी
- इस नई लाइब्रेरी में ऐसी सुविधाएं शामिल हैं जो Espresso को बेहतर बनाती हैं. हालांकि, ये कोर लाइब्रेरी का हिस्सा नहीं हैं
DrawerActionsपर काम करने के लिए नईDrawerLayout: यह Android Support Library पर निर्भर है. इसलिए, हम इसे Espresso की मुख्य लाइब्रेरी से बाहर रख रहे हैं
सैंपल टेस्ट
- इन टेस्ट को, टेस्ट ऐप्लिकेशन वाले पैकेज में ही लाइव कर दिया गया है
- Maven POMs में डुप्लीकेट guava deps को हटाने की समस्या ठीक कर दी गई है. इसलिए,
mvn installअब काम करना चाहिए