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 एलिमेंट, मौजूदा View हैरारकी में मौजूद नहीं है

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

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

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

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

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

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

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

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

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

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

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

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

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

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