उदाहरण के साथ JUnit ErrorCollector @ नियम

एक सामान्य परिदृश्य में, जब भी आप परीक्षण निष्पादन के दौरान किसी त्रुटि की पहचान करते हैं, तो आप परीक्षण को रोक देंगे, त्रुटि को ठीक करेंगे और परीक्षण को फिर से चलाएंगे।

लेकिन जुनीत का दृष्टिकोण थोड़ा अलग है। JUnit त्रुटि संग्राहक के साथ, आप किसी समस्या के मिलने या परीक्षण विफल होने के बाद भी परीक्षण निष्पादन के साथ जारी रख सकते हैं। त्रुटि कलेक्टर सभी त्रुटि वस्तुओं को एकत्र करता है और परीक्षण के निष्पादन के बाद केवल एक बार रिपोर्ट करता है।

इस ट्यूटोरियल में, आप सीखेंगे-

  • JUnit में त्रुटि कलेक्टर क्या है?
  • JUnit में @Rule क्या है?
  • ErrorCollector का उपयोग कर उदाहरण
  • JUnit ErrorCollector के लाभ

त्रुटि कलेक्टर का उपयोग क्यों करें?

एक परीक्षण स्क्रिप्ट लिखते समय, आप सभी परीक्षणों को निष्पादित करना चाहते हैं, भले ही कोड की कोई भी रेखा नेटवर्क विफलता, दावे की विफलता या किसी अन्य कारण से विफल हो। उस स्थिति में, आप अभी भी JUnit द्वारा प्रदान की गई एक विशेष सुविधा का उपयोग करके परीक्षण स्क्रिप्ट निष्पादित करना जारी रख सकते हैं जिसे "त्रुटि कलेक्टर" के रूप में जाना जाता है।

इसके लिए, JUnit @Rule एनोटेशन का उपयोग करता है जिसका उपयोग त्रुटि संग्राहक बनाने के लिए किया जाता है। एक बार एरर कलेक्टर के लिए ऑब्जेक्ट बन जाने के बाद, आप आसानी से मेथड addError (थ्रोबेबल एरर) का उपयोग करके ऑब्जेक्ट में सभी एरर जोड़ सकते हैं जैसा कि आप जानते हैं, कि थ्रोएबल जावा में अपवाद और त्रुटि वर्ग की सुपर क्लास है । जब आप इस तरह से त्रुटियाँ जोड़ते हैं, तो ये त्रुटियां JUnit परीक्षा परिणाम में लॉग इन होंगी।

एक त्रुटि कलेक्टर में सभी त्रुटियों को जोड़ने का लाभ यह है कि आप एक ही बार में सभी त्रुटियों को सत्यापित कर सकते हैं। इसके अलावा, यदि स्क्रिप्ट बीच में विफल हो जाती है, तो भी इसे निष्पादित करना जारी रख सकता है

नोट : सरल कलेक्टर का उपयोग करने की कोशिश या ब्लॉक को पकड़ने के लिए, त्रुटि कलेक्टर विधि का उपयोग करना संभव नहीं होगा।

नमूना कोड

त्रुटि कलेक्टर पर अधिक समझने के लिए, नीचे दिए गए कोड उदाहरण देखें जो दर्शाता है कि त्रुटि कलेक्टर ऑब्जेक्ट कैसे बनाया जाए और समस्या को ट्रैक करने के लिए उस ऑब्जेक्ट में सभी त्रुटियों को जोड़ा जाए:

पैकेज गुरु 99. अर्जुन;आयात org.junit.Rule;आयात org.junit.Test;आयात org.junit.rules.ErrorCollector;सार्वजनिक वर्ग ErrorCollectorExample {@ नियमसार्वजनिक ErrorCollector कलेक्टर = नया ErrorCollector ();@परीक्षासार्वजनिक शून्य का उदाहरण () {कलेक्टर.ड्रेडरॉयर (नई थ्रोएबल ("पहली पंक्ति में एक त्रुटि है"));कलेक्टर.ड्रेडरॉयर (नई थ्रेडेबल ("दूसरी पंक्ति में एक त्रुटि है"));संग्रहकर्तानहीं (इसमें शामिल है ("यहाँ एक त्रुटि है")));// कोड की सभी लाइनें निष्पादित होंगी और अंत में एक संयुक्त विफलता होगीलॉग इन किया।}}

JUnit में @Rule क्या है?

JUnit @rule एनोटेशन का उपयोग करके विशेष प्रकार के परीक्षण, टेस्ट केस या टेस्ट सूट की हैंडलिंग प्रदान करता है । @ क्रूले का उपयोग करके, आप परीक्षण के व्यवहार को आसानी से जोड़ या पुन: परिभाषित कर सकते हैं।

JUnit एपीआई द्वारा प्रदान किए गए कई अंतर्निहित नियम हैं जो एक परीक्षक उपयोग कर सकता है, या यहां तक ​​कि आप हमारे स्वयं के नियम भी लिख सकते हैं।

नीचे कोड की लाइन देखें, जो दिखाता है कि त्रुटि कलेक्टर के साथ @rule एनोटेशन का उपयोग कैसे करें:

@ नियमसार्वजनिक ErrorCollector कलेक्टर = नया ErrorCollector ();

ErrorCollector का उपयोग कर उदाहरण

त्रुटि कलेक्टर को समझने के लिए, आइए सभी त्रुटियों को इकट्ठा करने के लिए एक वर्ग और एक नियम बनाएं। आप यहां addError (फेंकने योग्य) का उपयोग करके सभी त्रुटियों को जोड़ देंगे।

नीचे दिए गए कोड को देखें जो केवल एक नियम बनाता है जो "त्रुटि कलेक्टर ऑब्जेक्ट" के अलावा कुछ भी नहीं है। जिसका उपयोग अंत में समस्या को रिपोर्ट करने के लिए सभी त्रुटियों को जोड़ने के लिए किया जाता है:

ErrorCollectorExample.java

पैकेज गुरु 99. अर्जुन;आयात org.junit.Assert;आयात org.junit.Rule;आयात org.junit.Test;आयात org.junit.rules.ErrorCollector;सार्वजनिक वर्ग ErrorCollectorExample {@ नियमसार्वजनिक ErrorCollector कलेक्टर = नया ErrorCollector ();@परीक्षासार्वजनिक शून्य का उदाहरण () {कलेक्टर.ड्रेडरॉयर (नई थ्रोएबल ("पहली पंक्ति में एक त्रुटि है"));कलेक्टर.ड्रेडरॉयर (नई थ्रेडेबल ("दूसरी पंक्ति में एक त्रुटि है"));System.out.println ("हैलो");प्रयत्न {Assert.assertTrue ("ए" == "बी");} पकड़ (फेंकने योग्य टी) {संग्राहक।}System.out.println ("विश्व !!!!");}}

TestRunner.java

आइए एक परीक्षण धावक में ऊपर परीक्षण वर्ग जोड़ें और सभी त्रुटियों को इकट्ठा करने के लिए इसे निष्पादित करें। नीचे देखें कोड:

पैकेज गुरु 99. अर्जुन;आयात org.junit.runner.JUnitCore;आयात org.junit.runner.Result;आयात org.junit.runner.notification.Failure;पब्लिक क्लास टेस्टरनर {सार्वजनिक स्थैतिक शून्य main (String [] args) {परिणाम = JUnitCore.runClasses (ErrorCollectorExample.class);के लिए (विफलता विफलता: result.getFailures ()) {System.out.println (विफलता.toString ());}System.out.println ("परिणाम ==" + result.wasSuccessful ());}}

आउटपुट:

विफलता के निशान देखें जो एक ही स्थान पर सभी त्रुटियों का पता लगाता है:

JUnit ErrorCollector के लाभ

आप कार्यात्मक या GUI सत्यापन के लिए JUnit दावे का उपयोग कर सकते हैं उदा

  1. assertEquals (स्ट्रिंग संदेश, ऑब्जेक्ट अपेक्षित, ऑब्जेक्ट वास्तविक) जो दो ऑब्जेक्ट्स के बराबर होते हैं।
  2. इसी तरह, AssertTrue (बूलियन स्थिति) का कहना है कि एक शर्त सच है।

दावे का उपयोग करना, सत्यापन परीक्षण आसान हो जाता है। लेकिन एक प्रमुख मुद्दा यह है कि यदि एक भी दावा विफल हो जाता है तो परीक्षण निष्पादन बंद हो जाएगा।

स्वचालन की सफलता का परीक्षण करने के लिए परीक्षण निरंतरता और रिकवरी हैंडलिंग महत्वपूर्ण है। इस तरह के परिदृश्य को संभालने के लिए एरर कलेक्टर सबसे अच्छा तरीका है।

सारांश :

  • जूनिट त्रुटि संग्राहक पहले परीक्षण के बाद भी परीक्षण जारी रखने की अनुमति देता है और अंत में परीक्षण विफल हो जाता है
  • त्रुटि कलेक्टर सभी त्रुटि वस्तुओं को इकट्ठा करता है और केवल रिपोर्ट करता है, आखिरकार, परीक्षण निष्पादन खत्म हो गया
  • एक त्रुटि कलेक्टर में सभी त्रुटियों को जोड़ने का लाभ यह है कि आप एक ही बार में सभी त्रुटियों को सत्यापित कर सकते हैं
  • त्रुटि संग्राहक केवल एररकोलर (JJ) द्वारा प्रदान की गई विधि addError (थ्रोबल इरेट) का उपयोग करके त्रुटियाँ जोड़ता है।

दिलचस्प लेख...