Espresso Test Recorder की मदद से यूज़र इंटरफ़ेस (यूआई) टेस्ट बनाना

Espresso Test Recorder टूल की मदद से, ऐप्लिकेशन के लिए यूज़र इंटरफ़ेस (यूआई) टेस्ट बनाए जा सकते हैं. इसके लिए, आपको कोई टेस्ट कोड लिखने की ज़रूरत नहीं होती. टेस्ट के किसी सीन को रिकॉर्ड करके, किसी डिवाइस के साथ अपने इंटरैक्शन को रिकॉर्ड किया जा सकता है. साथ ही, अपने ऐप्लिकेशन के खास स्नैपशॉट में यूज़र इंटरफ़ेस (यूआई) एलिमेंट की पुष्टि करने के लिए, दावे जोड़े जा सकते हैं. इसके बाद, Espresso Test Recorder सेव की गई रिकॉर्डिंग लेता है और उससे मिलता-जुलता यूज़र इंटरफ़ेस (यूआई) टेस्ट अपने-आप जनरेट करता है. इस टेस्ट को चलाकर, अपने ऐप्लिकेशन की जांच की जा सकती है.

Espresso Test Recorder, Espresso Testing framework के आधार पर टेस्ट लिखता है. यह AndroidX Test में मौजूद एक एपीआई है. Espresso API, उपयोगकर्ताओं की कार्रवाइयों के आधार पर, छोटे और भरोसेमंद यूज़र इंटरफ़ेस (यूआई) टेस्ट बनाने के लिए आपको प्रोत्साहित करता है. इस स्ट्रक्चर में, ऐप्लिकेशन की गतिविधियों और व्यू को सीधे तौर पर ऐक्सेस किए बिना, उम्मीदों, इंटरैक्शन, और पुष्टि के बारे में बताया जाता है. इससे टेस्ट के फ़ेल होने की संभावना कम हो जाती है और टेस्ट को तेज़ी से पूरा किया जा सकता है.

अपने टेस्ट डिवाइस पर ऐनिमेशन बंद करना

Espresso Test Recorder का इस्तेमाल करने से पहले, पक्का करें कि आपने अपने टेस्ट डिवाइस पर ऐनिमेशन बंद कर दिए हों. इससे आपको अनचाहे नतीजे नहीं मिलेंगे. Espresso को सेटअप करने के निर्देशों का पालन करें. हालांकि, ध्यान दें कि आपको Espresso लाइब्रेरी के लिए, मैन्युअल रूप से डिपेंडेंसी रेफ़रंस सेट करने की ज़रूरत नहीं है. ऐसा इसलिए, क्योंकि जब रिकॉर्डिंग सेव की जाती है, तो Test Recorder इसे अपने-आप सेट कर देता है. किसी प्रोजेक्ट के लिए, इन चरणों को सिर्फ़ एक बार पूरा करना होता है.

Espresso टेस्ट रिकॉर्ड करना

Espresso टेस्ट में दो मुख्य कॉम्पोनेंट होते हैं: यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन और व्यू एलिमेंट पर दावे. यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन में, टैप करने और टाइप करने जैसी कार्रवाइयां शामिल होती हैं. इनका इस्तेमाल करके कोई व्यक्ति आपके ऐप्लिकेशन से इंटरैक्ट कर सकता है. ऐसेट, स्क्रीन पर मौजूद विज़ुअल एलिमेंट के कॉन्टेंट या उनके मौजूद होने की पुष्टि करती हैं. उदाहरण के लिए, नोट की टेस्टिंग करने वाले ऐप्लिकेशन के लिए एस्प्रेसो टेस्ट में, बटन पर क्लिक करने और नया नोट लिखने के लिए यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन शामिल हो सकते हैं. हालांकि, बटन की मौजूदगी और नोट के कॉन्टेंट की पुष्टि करने के लिए, इसमें दावे इस्तेमाल किए जाएंगे.

इस सेक्शन में, Espresso Test Recorder का इस्तेमाल करके, इन दोनों टेस्ट कॉम्पोनेंट को बनाने का तरीका बताया जाएगा. साथ ही, टेस्ट जनरेट करने के लिए, रिकॉर्डिंग को सेव करने का तरीका भी बताया जाएगा.

यूज़र इंटरफ़ेस (यूआई) के साथ हुए इंटरैक्शन रिकॉर्ड करना

Espresso Test Recorder की मदद से टेस्ट रिकॉर्ड करने के लिए, यह तरीका अपनाएं:

  1. चलाएं > Espresso टेस्ट रिकॉर्ड करें पर क्लिक करें.
  2. डिप्लॉयमेंट का टारगेट चुनें विंडो में, वह डिवाइस चुनें जिस पर आपको टेस्ट रिकॉर्ड करना है. अगर ज़रूरी हो, तो नया Android वर्चुअल डिवाइस बनाएं. ठीक है पर क्लिक करें.
  3. Espresso Test Recorder, आपके प्रोजेक्ट का बिल्ड ट्रिगर करता है. साथ ही, Espresso Test Recorder को ऐप्लिकेशन के साथ इंटरैक्ट करने की अनुमति देने से पहले, ऐप्लिकेशन को इंस्टॉल और लॉन्च करना ज़रूरी है. ऐप्लिकेशन लॉन्च होने के बाद, अपना टेस्ट रिकॉर्ड करें विंडो दिखती है. साथ ही, आपने अब तक डिवाइस के साथ इंटरैक्ट नहीं किया है, इसलिए मुख्य पैनल में "अब तक कोई इवेंट रिकॉर्ड नहीं किया गया" लिखा होता है. अपने डिवाइस के साथ इंटरैक्ट करें, ताकि "टैप करें" और "टाइप करें" जैसी कार्रवाइयों के इवेंट लॉग किए जा सकें.

ध्यान दें: इंटरैक्शन लॉग करना शुरू करने से पहले, आपको अपने डिवाइस पर एक डायलॉग दिख सकता है. इसमें "Waiting for Debugger" या "Attaching Debugger" लिखा होगा. Espresso Test Recorder, यूज़र इंटरफ़ेस (यूआई) इवेंट को लॉग करने के लिए, डिबगर का इस्तेमाल करता है. डीबगर अटैच होने पर, डायलॉग अपने-आप बंद हो जाएगा. बंद करें पर क्लिक न करें.

रिकॉर्ड की गई बातचीत, अपना टेस्ट रिकॉर्ड करें विंडो के मुख्य पैनल में दिखेगी. इसे नीचे दिए गए पहले फ़िगर में दिखाया गया है. टेस्ट चलाने पर, Espresso टेस्ट इन कार्रवाइयों को उसी क्रम में पूरा करने की कोशिश करेगा.

पहली इमेज. टेस्ट रिकॉर्ड करें विंडो में, लॉग किए गए यूज़र इंटरफ़ेस (यूआई) इंटरैक्शन.

यूज़र इंटरफ़ेस (यूआई) एलिमेंट की पुष्टि करने के लिए, दावे जोड़ना

असर्शन, तीन मुख्य टाइप के ज़रिए View एलिमेंट के मौजूद होने या उसके कॉन्टेंट की पुष्टि करते हैं:

  • text is: यह विकल्प, चुने गए व्यू एलिमेंट के टेक्स्ट कॉन्टेंट की जांच करता है
  • exists: इससे यह पता चलता है कि View एलिमेंट, स्क्रीन पर दिखने वाली मौजूदा View हैरारकी में मौजूद है या नहीं
  • does not exist: इससे यह पता चलता है कि View एलिमेंट, मौजूदा व्यू हैरारकी में मौजूद नहीं है

अपने टेस्ट में कोई दावा जोड़ने के लिए, यह तरीका अपनाएं:

  1. दावा जोड़ें पर क्लिक करें. Espresso को यूज़र इंटरफ़ेस (यूआई) के क्रम और ऐप्लिकेशन की मौजूदा स्थिति के बारे में अन्य जानकारी मिलती है. इस दौरान, स्क्रीन कैप्चर डायलॉग दिखता है. Espresso के स्क्रीनशॉट कैप्चर करने के बाद, डायलॉग अपने-आप बंद हो जाता है.
  2. मौजूदा स्क्रीन का लेआउट, Record Your Test विंडो की दाईं ओर मौजूद पैनल में दिखता है. जिस व्यू एलिमेंट पर आपको असर्शन बनाना है उसे चुनने के लिए, स्क्रीनशॉट में मौजूद एलिमेंट पर क्लिक करें. इसके अलावा, विंडो में सबसे नीचे मौजूद असर्शन में बदलाव करें बॉक्स में जाकर, पहले ड्रॉप-डाउन मेन्यू का इस्तेमाल करें. चुने गए व्यू ऑब्जेक्ट को लाल रंग के बॉक्स में हाइलाइट किया गया है.
  3. दावा में बदलाव करें बॉक्स में मौजूद दूसरे ड्रॉप-डाउन मेन्यू से, वह दावा चुनें जिसका इस्तेमाल करना है. Espresso, चुने गए View एलिमेंट के लिए मान्य assertion को मेन्यू में दिखाता है.
    • "टेक्स्ट है" दावा चुनने पर, Espresso चुने गए व्यू एलिमेंट में मौजूद टेक्स्ट को अपने-आप डाल देता है. दावे में बदलाव करें बॉक्स में मौजूद टेक्स्ट फ़ील्ड का इस्तेमाल करके, अपने हिसाब से दावे में बदलाव किया जा सकता है.
  4. कोई और दावा बनाने के लिए, सेव करें और दूसरा जोड़ें पर क्लिक करें या दावे वाले पैनल बंद करने के लिए, दावा सेव करें पर क्लिक करें.

दूसरी इमेज में, "टेक्स्ट है" दावे को बनाया गया है. इससे यह पुष्टि की जा सकती है कि नोट का टाइटल "हैप्पी टेस्टिंग!" है:

दूसरी इमेज. व्यू एलिमेंट चुनने के बाद, Edit assertion बॉक्स (लाल रंग में दिखाया गया है).

असर्शन बनाते समय, अपने ऐप्लिकेशन का इस्तेमाल जारी रखा जा सकता है. भले ही, अपने टेस्ट को रिकॉर्ड करें विंडो में असर्शन पैनल खुले हों. Espresso Test Recorder आपकी कार्रवाइयों को लॉग करता रहेगा. हालांकि, सेव करने के बाद, जिस दावे में बदलाव किया जा रहा है वह इन इंटरैक्शन से पहले दिखेगा. दावे के लिए लिए गए स्क्रीनशॉट में, डिवाइस या एम्युलेटर का वही लेआउट दिखता है जो दावा जोड़ें बटन दबाते समय था.

रिकॉर्डिंग सेव करना

ऐप्लिकेशन से इंटरैक्ट करने और दावे जोड़ने के बाद, अपनी रिकॉर्डिंग सेव करने और Espresso टेस्ट जनरेट करने के लिए, यह तरीका अपनाएं:

  1. रिकॉर्डिंग पूरी करें पर क्लिक करें. इसके बाद, अपने टेस्ट के लिए टेस्ट क्लास का नाम चुनें विंडो दिखेगी.
  2. Espresso Test Recorder, लॉन्च की गई गतिविधि के नाम के आधार पर, आपके टेस्ट को उसके पैकेज में एक यूनीक नाम देता है. अगर आपको सुझाया गया नाम बदलना है, तो टेस्ट क्लास का नाम टेक्स्ट फ़ील्ड का इस्तेमाल करें. सेव करें पर क्लिक करें.
    • अगर आपने अपने ऐप्लिकेशन में Espresso डिपेंडेंसी नहीं जोड़ी हैं, तो टेस्ट सेव करने की कोशिश करते समय, आपको Espresso डिपेंडेंसी मौजूद नहीं हैं डायलॉग दिखेगा. build.gradle फ़ाइल में डिपेंडेंसी अपने-आप जोड़ने के लिए, हां पर क्लिक करें.
  3. Espresso Test Recorder के फ़ाइल जनरेट करने के बाद, यह अपने-आप खुल जाती है. साथ ही, Android Studio, आईडीई की प्रोजेक्ट विंडो में टेस्ट क्लास को चुने गए विकल्प के तौर पर दिखाता है.
    • टेस्ट कहां सेव होता है, यह इंस्ट्रुमेंटेशन टेस्ट के रूट की जगह और लॉन्च की गई गतिविधि के पैकेज के नाम पर निर्भर करता है. उदाहरण के लिए, Notes testing app के टेस्ट, उस ऐप्लिकेशन मॉड्यूल के src > androidTest > java > com.example.username.appname फ़ोल्डर में सेव होते हैं जिस पर आपने टेस्ट रिकॉर्ड किया था.

Espresso टेस्ट को स्थानीय तौर पर चलाना

Espresso टेस्ट चलाने के लिए, Android Studio IDE की बाईं ओर मौजूद Project विंडो का इस्तेमाल करें:

  1. ऐप्लिकेशन मॉड्यूल का वह फ़ोल्डर खोलें जिसमें आपको टेस्ट चलाना है. इसके बाद, उस टेस्ट पर जाएं. टेस्ट की जगह, इंस्ट्रुमेंटेशन टेस्ट रूट और लॉन्च की गई गतिविधि के पैकेज के नाम पर निर्भर करती है. यहां दिए गए उदाहरणों से पता चलता है कि Notes testing app के लिए, टेस्ट कहां सेव होगा:
    • अगर विंडो में Android व्यू का इस्तेमाल किया जा रहा है, तो java > com.example.username.appname (androidTest) पर जाएं.
    • अगर विंडो में प्रोजेक्ट व्यू का इस्तेमाल किया जा रहा है, तो मॉड्यूल फ़ोल्डर में src > androidTest > java > com.example.username.appname पर जाएं.
  2. टेस्ट पर राइट क्लिक करें और 'testName' चलाएं पर क्लिक करें
    • इसके अलावा, टेस्ट फ़ाइल खोलकर, जनरेट की गई टेस्ट क्लास या तरीके पर राइट क्लिक किया जा सकता है. अपने ऐप्लिकेशन की जांच करें पेज पर टेस्ट चलाने के तरीके के बारे में ज़्यादा जानें.
  3. डिप्लॉयमेंट टारगेट चुनें विंडो में, वह डिवाइस चुनें जिस पर आपको टेस्ट चलाना है. अगर ज़रूरी हो, तो नया Android वर्चुअल डिवाइस बनाएं. ठीक है पर क्लिक करें.

आईडीई में सबसे नीचे मौजूद, चलाएं विंडो में जाकर, टेस्ट की प्रोग्रेस पर नज़र रखें. Android Studio, आपके प्रोजेक्ट का पूरा बिल्ड चलाता है. साथ ही, Run विंडो में, आपके टेस्ट के नाम वाला टैब खोलता है. इसे तीसरे फ़िगर में दिखाया गया है. इस टैब में, यह देखा जा सकता है कि आपका टेस्ट पास हुआ या फ़ेल. साथ ही, यह भी देखा जा सकता है कि टेस्ट को पूरा होने में कितना समय लगा. जांच पूरी होने पर, टैब में "जांच पूरी हो गई है" मैसेज दिखेगा.

तीसरी इमेज. Espresso टेस्ट को स्थानीय तौर पर चलाने के बाद, Run विंडो में आउटपुट का सैंपल.

टेस्ट रन कॉन्फ़िगरेशन लिखने के बारे में ज़्यादा जानने के लिए, रन/डीबग कॉन्फ़िगरेशन बनाएं और उनमें बदलाव करें में "किसी क्लास या तरीके के लिए टेस्ट कॉन्फ़िगरेशन तय करना" सेक्शन पढ़ें.

Android के लिए Firebase टेस्ट लैब की मदद से, Espresso टेस्ट चलाना

Espresso Test Recorder से जनरेट किए गए टेस्ट का इस्तेमाल, Firebase टेस्ट लैब के साथ किया जा सकता है. इससे, सैकड़ों डिवाइस कॉन्फ़िगरेशन पर क्लाउड में अपने ऐप्लिकेशन की जांच की जा सकती है. Spark प्लान के तहत, हर दिन मिलने वाले मुफ़्त कोटे में Test Lab की मदद से अपने ऐप्लिकेशन को टेस्ट करने के लिए, कोई शुल्क नहीं देना होता. Firebase टेस्ट लैब की मदद से Espresso टेस्ट चलाने के लिए, अपने ऐप्लिकेशन के लिए एक Firebase प्रोजेक्ट बनाएं. इसके बाद, Android Studio से Firebase टेस्ट लैब की मदद से टेस्ट चलाने के लिए दिए गए निर्देशों का पालन करें.

चौथी इमेज. कई डिवाइसों पर Firebase टेस्ट लैब की मदद से टेस्ट चलाने के बाद, चलाएं विंडो में सैंपल आउटपुट.