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
- में ले जाया गया है
registerIdlingResources()
के बजायgetInstance().register()
का इस्तेमाल करें
- Guava को अब किसी दूसरे "इंटरनल" नेमस्पेस में जार कर दिया गया है. अगर आपने गलती से 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: एस्प्रेसो इंटेंट में, ऐप्लिकेशन का गैर-ज़रूरी लेबल मौजूद है
- समस्या 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 withUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
– this allowsUiAutomator
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
- 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
- रनर
- एपीआई लेवल 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 पर
- रनर
- Gradle
JaCoCo
के काम न करने वाले सपोर्ट को ठीक किया गया - टेस्ट शार्डिंग की सुविधा काम न करने की समस्या ठीक की गई
JUnit3
स्टाइल टेस्ट के टाइम आउट होने के बाद, टेस्ट रनर में स्थिति ठीक नहीं होने की समस्या को ठीक किया गया
- Gradle
अन्य ज़रूरी बदलाव
- 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
अब काम करना चाहिए