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

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 (2018-12-06)

  • Core
    • नया core-ktx kotlin एक्सटेंशन आर्टफ़ैक्ट! इसमें Kotlin के साथ काम करने वाला ActivityScenario.launchActivity API शामिल है
    • कस्टम इंटेंट के साथ गतिविधियां लॉन्च करने के लिए, नया ActivityScenario API
    • गतिविधि का नतीजा पाने के लिए, नया ActivityScenario API
    • Make ActivityScenario closeable
  • Espresso
    • withResourceNameMatcher और HumanReadables में बदलाव किया गया है, ताकि वे API 28 के साथ काम कर सकें.
    • ReplaceTextAction के ब्यौरे को अपडेट करें, ताकि उसमें stringToBeSet शामिल हो
    • Robolectric के पॉज़ किए गए लूपर मोड में Espresso के साथ काम करता है.
  • JUnit
    • टेस्ट सेटअप और टियरडाउन पर किसी गतिविधि को अपने-आप लॉन्च और बंद करने के लिए, नया ActivityScenarioRule API
    • junit-ktx kotlin extension का नया आर्टफ़ैक्ट! इसमें 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
    • Fix withContentDescription to work with non-string types
    • 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
    • नया आर्टफ़ैक्ट! इसमें सूचना, इंटेंट, बंडल, पार्सल करने लायक, और MotionEvent के लिए कस्टम ट्रुथ सब्जेक्ट शामिल हैं
  • 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 फ़ाइल इसे पुल करेगी. डेवलपर के लिए यह बदलाव NoOp होना चाहिए, क्योंकि 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: Orchestrator, TransactionTooLargeException की वजह से क्रैश हो जाता है
    • समस्या 77549481: हर टेस्ट के बाद, टेस्ट ऑर्केस्ट्रेटर को "pm clear" चलाना चाहिए

Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05-12-2017)

  • 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 को अब किसी दूसरे "इंटरनल" नेमस्पेस में जार कर दिया गया है. अगर आपने गलती से 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: एस्प्रेसो इंटेंट में, ऐप्लिकेशन का गैर-ज़रूरी लेबल मौजूद है
    • समस्या 37093953: Espresso: No available check for null/empty error text
    • समस्या 37071776: espresso-core, Guava की .pom फ़ाइलें एम्बेड करता है
    • समस्या 37062612: release() में NPE
    • समस्या 37063389: Guava और espresso-web को androidTest डिपेंडेंसी के तौर पर इस्तेमाल करने पर, कंपाइल नहीं होता
    • समस्या 37070533: Android डिज़ाइन सपोर्ट लाइब्रेरी में NavigationView के लिए सहायता जोड़ें
  • Runner
    • @Test(timeout = 123) के साथ @UiThreadTest का इस्तेमाल करने की सुविधा से जुड़ी समस्या ठीक की गई
    • Fixed -e notClass runner arg
    • 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 Maven के ज़रिए पब्लिश की जाती हैं
  • 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
  • रनर
    • एपीआई लेवल 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 के साथ कॉल किया जाना चाहिए
  • रनर
    • Gradle JaCoCo के काम न करने वाले सपोर्ट को ठीक किया गया
    • टेस्ट शार्डिंग की सुविधा काम न करने की समस्या ठीक की गई
    • JUnit3 स्टाइल टेस्ट के टाइम आउट होने के बाद, टेस्ट रनर में स्थिति ठीक नहीं होने की समस्या को ठीक किया गया

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

  • Javadoc से जुड़ी गड़बड़ियां ठीक की गईं और गड़बड़ी के मैसेज को बेहतर बनाया गया
  • तरीके के फ़िल्टर का इस्तेमाल करते समय, suite() तरीकों को अनदेखा करें और init गड़बड़ियों को अनदेखा न करें

Espresso 2.2 / ATSL 0.3 (2015-06-09)

नई सुविधाएं

  • 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
  • अब यह माना जाता है कि अनुमान के सही न होने पर, टेस्ट को फ़ेल करने के बजाय अनदेखा किया जाएगा
  • ExecutorService के ज़रिए, MonitoringInstrumentation से गतिविधि के इंस्टेंस लीक होने की समस्या ठीक की गई
  • उन गतिविधियों से जुड़ी समस्या ठीक की गई है जो रुकी हुई स्थिति में अटकी हुई थीं
  • अगर कोई स्क्रोल इवेंट जनरेट नहीं हुआ है, तो Until.scrollFinished() को अपडेट करके 'सही' पर सेट करें. UiObject2#setText() में संभावित NPE से सुरक्षा पाएं.

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 अगले कर्सर पर जा सकता है
    • NullPointerException में PreferenceMatchers withTitle अब नहीं दिखता
    • आइडलिंग रिसॉर्स को अनरजिस्टर करने पर, Espresso को अब यह नहीं लगता कि हमारे पास आइडलिंग रिसॉर्स व्यस्त हैं
    • Espresso Contrib इस्तेमाल करने वाले लोगों के लिए, सहायता से जुड़ी एनोटेशन सुविधा का अपडेट किया गया वर्शन
  • रनर
    • AndroidJUnit4 अब उन टेस्ट को स्किप कर देता है जिनमें अनुमान सही नहीं होते
  • UIAutomator
    • StaleObjectException को रोकने के लिए वॉचर चलाएं

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

  • जब लैटिन के अलावा किसी अन्य भाषा की स्ट्रिंग का इस्तेमाल करके टाइप टेक्स्ट नहीं किया जा सकता, तब बेहतर गड़बड़ी का मैसेज जोड़ें

UIAutomator 2.0 (12-03-2015)

UI Automator अब Android इंस्ट्रूमेंटेशन पर आधारित है. साथ ही, ./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 पिकर के साथ इंटरैक्शन को मैनेज करती है
  • मैचर
    • 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 Library

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

सैंपल टेस्ट

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