टेस्ट रिलीज़ नोट का संग्रह

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 में ले जाया गया है
    • Guava को अब jarjar'd करके किसी दूसरे "internal" नेमस्पेस में ले जाया गया है. अगर गलती से Espresso नेमस्पेस के ज़रिए Guava API का इस्तेमाल किया जा रहा है, तो आपको समस्याएं दिख सकती हैं
      • गुआवा के शेड (.core.deps.guava.) के किसी भी रेफ़रंस को हटाएं
      • Support Library के वर्शन को 25.4.0 या इसके बाद के वर्शन पर अपग्रेड करें

पहले से मालूम समस्याएं

  • AndroidTestOrchestrator

नई सुविधाएं

  • Espresso
    • एपीआई 26 पर espresso-core और espresso-web के लिए, मल्टीप्रोसेस एस्प्रेसो की नई सुविधा उपलब्ध है. हालांकि, नहीं espresso-contrib
    • नया लाइटवेट IdlingRegistry एपीआई
    • Executors के साथ डेटा सिंक करने के लिए नया एपीआई
    • नेटवर्क के अनुरोधों और जवाबों को सिंक करने में मदद करने के लिए नया एपीआई.
      • नया Maven आर्टफ़ैक्ट: com.android.support.test.espresso.idling:idling-net:3.0.0
      • इसमें UriIdlingResource क्लास शामिल है
    • नए 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 में स्क्रोल किया जा सकता है
  • नियम
  • AndroidTestOrchestrator
    • Android Test Orchestrator, टेस्ट इकट्ठा करने और उन्हें चलाने का नया तरीका उपलब्ध कराता है. इसमें सही तरीके से टेस्ट करने और उन्हें अलग-अलग चलाने पर ज़ोर दिया जाता है. ऑर्केस्ट्रेटर, इंस्ट्रूमेंटेशन की एक स्वतंत्र प्रोसेस है. यह हर टेस्ट के लिए, इंस्ट्रूमेंटेशन रनर की एक प्रोसेस शुरू करता है और नतीजे इकट्ठा करता है.
      • ऐप्लिकेशन क्रैश होने पर, रनर इंस्ट्रूमेंटेशन बंद हो जाता है, लेकिन ऑर्केस्ट्रेटर बंद नहीं होता. इससे आपकी टेस्ट सुइट जारी रहती है
      • ऑर्केस्ट्रेटर APK इंस्टॉल करना ज़रूरी है – 'com.android.support.test:orchestrator:1.0.0'
      • वर्शन 1.0 में सिर्फ़ कमांड-लाइन इंटरफ़ेस है. इसे Android Studio और Firebase Test Labs के साथ इंटिग्रेट करने की योजना है

गड़बड़ियां ठीक की गईं

  • 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 with UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES – this allows UiAutomator to be used while other accessibility services are running
    • समस्या 37082813: setText() खाली EditText ऑब्जेक्ट पर, एपीआई लेवल 19 या इससे पहले के वर्शन में NullPointerException थ्रो करता है

अन्य ज़रूरी बदलाव

  • बाइनरी अब Google मेवन के ज़रिए पब्लिश की जाती हैं
  • espresso-core और espresso-web JAR फ़ाइलों का साइज़ कम किया गया – एम्बेड की गई डिपेंडेंसी पर अब ProGuard लागू किया गया है
  • सभी .aar फ़ाइलों में अब ProGuard के नियम शामिल हैं
  • रिलीज़ किए गए आर्टफ़ैक्ट में proguard_library.cfg फ़ाइलें जोड़ना
  • Tapper इंटरफ़ेस में, sendTap() का नया वर्शन उपलब्ध है

बाहरी योगदान

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
  • रनर
    • समस्या 196066: AndroidJUnitRunner में मौजूद -e log true आर्ग्युमेंट, असल टेस्ट को बायपास नहीं करता
    • रनर के onCreate() में डीबगर के लिए इंतज़ार करें
    • टेस्ट के लिए एनोटेशन की सुविधा को प्लैटफ़ॉर्म से हटाकर, एटीएसएल में जोड़ा गया
    • JSBridge के बारे में स्टैक ट्रेस डंप को हटाया गया
    • AndroidAnnotatedBuilder ठीक की गई

अन्य ज़रूरी बदलाव

  • 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 खोलने और बंद करने की कार्रवाई वाली फ़ैक्ट्रियां जोड़ें

गड़बड़ियां ठीक की गईं

  • espresso
    • ViewActions.closeSoftKeyboard() अब यह पक्का करता है कि सॉफ़्ट कीबोर्ड पूरी तरह से हट गया हो
    • एपीआई लेवल 21 और इसके बाद के वर्शन पर, Espresso के Espresso.pressBack() तरीके के साथ सिंक्रनाइज़ेशन की समस्या ठीक की गई
    • एपीआई लेवल 23 पर, कीबोर्ड बंद होने के ऐनिमेशन के लिए सिंक करने की सुविधा ठीक की गई
  • rules
    • एपीआई लेवल 23 पर ServiceTestRule को ठीक किया गया है. startService() को हमेशा Intent के साथ कॉल किया जाना चाहिए
  • runner
    • Gradle JaCoCo के काम न करने वाले सपोर्ट को ठीक किया गया
    • टेस्ट शार्डिंग की सुविधा काम न करने की समस्या ठीक की गई
    • JUnit3 स्टाइल टेस्ट के टाइमआउट के बाद, टेस्ट रनर में अलग-अलग स्थितियों को ठीक किया गया

अन्य ज़रूरी बदलाव

  • 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 अगले कर्सर पर जा सके
    • PreferenceMatchers withTitle के साथ 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.jar
    • CountingIdlingResource अब espresso-contrib-release-2.0.jar में मौजूद है (जैसा कि हमेशा होना चाहिए था)
  • गुआवा डिपेंडेंसी (ज़रूरी नहीं) को सार्वजनिक एपीआई से हटा दिया गया है, ताकि गुआवा डिपेंडेंसी को फिर से पैकेज किया जा सके और DEX कोलिज़न (डेवलपमेंट में आने वाली एक बड़ी समस्या) से बचा जा सके. इन तरीकों पर असर पड़ा है:
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

नई सुविधाएं

  • कार्रवाइयां
    • ViewActions
      • replaceText()
      • openLink()
      • ऊपर और नीचे की ओर स्वाइप करें
    • espresso-contrib
      • RecyclerViewActions: यह कुकी, RecyclerViews के साथ होने वाले इंटरैक्शन को मैनेज करती है
      • PickerActions: यह कुकी, Date और Time पिकर के साथ इंटरैक्शन को मैनेज करती है
  • Matchers
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • 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 और swipeRight ViewActions
  • एक साथ कई विंडो इस्तेमाल करने की सुविधा: यह एक ऐडवांस सुविधा है. इसकी मदद से, उस टारगेट विंडो को चुना जा सकता है जिस पर Espresso को कार्रवाई करनी है
  • TypeTextAction में सुधार: इससे पहले से फ़ोकस की गई व्यू में टेक्स्ट टाइप किया जा सकता है. इससे टेक्स्ट जोड़ना आसान हो जाता है
  • कई गड़बड़ियां ठीक की गईं

Espresso Contrib लाइब्रेरी

  • इस नई लाइब्रेरी में ऐसी सुविधाएं शामिल हैं जो Espresso को बेहतर बनाती हैं. हालांकि, ये कोर लाइब्रेरी का हिस्सा नहीं हैं
  • DrawerActions पर काम करने के लिए नई DrawerLayout: यह Android Support Library पर निर्भर है. इसलिए, हम इसे Espresso की मुख्य लाइब्रेरी से बाहर रख रहे हैं

सैंपल टेस्ट

  • इन टेस्ट को, टेस्ट ऐप्लिकेशन वाले पैकेज में ही लाइव कर दिया गया है
  • Maven POMs में डुप्लीकेट guava deps को हटाने की समस्या ठीक कर दी गई है. इसलिए, mvn install अब काम करना चाहिए