JUnit उदाहरण के साथ ErrorCollector @Rule
⚡ स्मार्ट सारांश
JUnit ErrorCollector एक ऐसा नियम है जो किसी परीक्षण को विफलता के बाद भी चलते रहने देता है, सभी त्रुटि ऑब्जेक्ट को एकत्रित करता है और परीक्षण विधि के समाप्त होने पर उन्हें एक साथ रिपोर्ट करता है, न कि उसे रोक देता है।ping पहली समस्या पर।
सामान्य परिदृश्य में, जब भी आप परीक्षण निष्पादन के दौरान किसी त्रुटि की पहचान करते हैं, तो आप परीक्षण रोक देते हैं, त्रुटि को ठीक करते हैं और परीक्षण को पुनः चलाते हैं।
परंतु JUnit इसका दृष्टिकोण थोड़ा अलग है। JUnit एरर कलेक्टर की मदद से, समस्या पाए जाने या टेस्ट विफल होने के बाद भी आप टेस्ट का निष्पादन जारी रख सकते हैं। एरर कलेक्टर सभी त्रुटि ऑब्जेक्ट्स को एकत्रित करता है और टेस्ट निष्पादन समाप्त होने के बाद केवल एक बार उनकी रिपोर्ट करता है।
त्रुटि संग्राहक का उपयोग क्यों करें?
टेस्ट स्क्रिप्ट लिखते समय, आप चाहते हैं कि नेटवर्क विफलता, अभिकथन विफलता या किसी अन्य कारण से कोड की कोई भी पंक्ति विफल होने पर भी सभी टेस्ट निष्पादित हों। ऐसी स्थिति में, आप एक विशेष सुविधा का उपयोग करके टेस्ट स्क्रिप्ट को निष्पादित करना जारी रख सकते हैं। JUnit जिसे "त्रुटि संग्राहक" के नाम से जाना जाता है।
इसके लिए, JUnit का उपयोग करता है @नियम एनोटेशनइसका उपयोग एरर कलेक्टर ऑब्जेक्ट बनाने के लिए किया जाता है। एरर कलेक्टर ऑब्जेक्ट बन जाने के बाद, आप इस विधि का उपयोग करके सभी त्रुटियों को आसानी से ऑब्जेक्ट में जोड़ सकते हैं। addError (फेंकी जा सकने वाली त्रुटि)। जैसा कि आप जानते हैं, फेंकने योग्य यह सुपर क्लास है अपवाद और त्रुटि कक्षाओं में Javaजब आप इस तरह से त्रुटियां जोड़ते हैं, तो ये त्रुटियां लॉग में दर्ज हो जाएंगी। JUnit परीक्षा परिणाम।
सभी त्रुटियों को एरर कलेक्टर में जोड़ने का लाभ यह है कि आप सभी त्रुटियों को एक साथ सत्यापित कर सकते हैं। साथ ही, यदि स्क्रिप्ट बीच में विफल हो जाती है, तो भी निष्पादन परीक्षण विधि के अंत तक जारी रहता है।
नोट: यदि आप किसी साधारण assert या try/catch ब्लॉक का उपयोग कर रहे हैं, तो त्रुटि संग्राहक विधि का उपयोग करना संभव नहीं होगा।
नमूना कोड
एरर कलेक्टर के बारे में अधिक जानने के लिए, नीचे दिए गए कोड उदाहरण को देखें, जो दर्शाता है कि एरर कलेक्टर ऑब्जेक्ट कैसे बनाया जाता है और उस ऑब्जेक्ट में सभी त्रुटियों को कैसे जोड़ा जाता है। tracसमस्या यह है:
package guru99.junit; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); collector.checkThat(getResults(), not(containsString("here is an error"))); // all lines of code will execute and at the end a combined failure will be logged in. } }
नोट: यह एक उदाहरण मात्र है।tracयह फ़ाइल कंपाइल करने योग्य नहीं है। इसका अंतिम कमेंट बिना // के दूसरी पंक्ति में चला जाता है, और getResults() फ़ंक्शन और Hamcrest के मैचर्स नहीं दिखाए गए हैं। इसका पूरा रन करने योग्य संस्करण नीचे दिया गया है। ErrorCollector का उपयोग करके उदाहरण.
@Rule क्या है? JUnit?
JUnit यह परीक्षणों के प्रबंधन का एक विशेष तरीका प्रदान करता है। परीक्षण का मामला या टेस्ट सूट का उपयोग करके @नियम एनोटेशन@Rule का उपयोग करके, आप आसानी से परीक्षण के व्यवहार को जोड़ या पुनर्परिभाषित कर सकते हैं।
इसमें कई अंतर्निहित नियम दिए गए हैं। JUnit एक API जिसका उपयोग परीक्षक कर सकता है, और आप अपना खुद का नियम भी लिख सकते हैं। नियम का फ़ील्ड सार्वजनिक, गैर-स्थैतिक और TestRule को लागू करने वाले प्रकार का होना चाहिए।
नीचे दिए गए कोड की पंक्ति देखें, जो दर्शाती है कि @Rule एनोटेशन का उपयोग Error Collector के साथ कैसे किया जाता है:
@Rule public ErrorCollector collector= new ErrorCollector();
JUnit 5 नोट: Jupiter ने नियमों को एक्सटेंशन API से बदल दिया है, इसलिए org.junit.jupiter में @Rule और ErrorCollector मौजूद नहीं हैं। इनके निकटतम समकक्ष Assertions.assertAll() और AssertJ SoftAssertions हैं। JUnit यहां दिखाया गया कोड 4 अभी भी पुराने इंजन में चल रहा है। देखें JUnit एनोटेशन पूरे मानचित्र के लिए ट्यूटोरियलping.
ErrorCollector का उपयोग करके उदाहरण
एरर कलेक्टर को समझने के लिए, आइए एक क्लास और एक नियम बनाते हैं जो सभी एरर को इकट्ठा करेगा। यहाँ आप addError(throwable) का उपयोग करके सभी एरर जोड़ेंगे।
नीचे दिए गए कोड को देखें, जो केवल एक नियम बनाता है जो एक "त्रुटि संग्राहक ऑब्जेक्ट" है। इसका उपयोग अंत में समस्या की रिपोर्ट करने के लिए सभी त्रुटियों को जोड़ने के लिए किया जाता है:
ErrorCollectorExample.java
package guru99.junit; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); System.out.println("Hello"); try { Assert.assertTrue("A " == "B"); } catch (Throwable t) { collector.addError(t); } System.out.println("World!!!!"); } }
टेस्टरनर.जावा
आइए उपरोक्त टेस्ट क्लास को टेस्ट रनर में जोड़कर उसे चलाएं और सभी त्रुटियों को एकत्रित करें। नीचे दिया गया कोड देखें:
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(ErrorCollectorExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
आउटपुट:
विफलता देखें tracई, जो tracयह सभी त्रुटियों को एक ही स्थान पर इकट्ठा करता है। JUnit व्यू एक रन की गणना करता है लेकिन दो त्रुटियां और एक विफलता रिपोर्ट करता है, जिनमें से प्रत्येक का अपना लाइन नंबर होता है:
के लाभ JUnit त्रुटि संग्राहक
आप एक का उपयोग कर सकते हैं JUnit अभिकथन उदाहरण के लिए, कार्यात्मक या जीयूआई सत्यापन के लिए:
- assertEquals(String message, Object expected, Object actual), जो दो वस्तुओं की समानता की तुलना करता है।
- इसी प्रकार, assertTrue(Boolean condition) यह दावा करता है कि शर्त सत्य है।
अभिकथनों का उपयोग करके, सत्यापन परीक्षण आसान हो जाता है। लेकिन एक बड़ी समस्या यह है कि यदि एक भी अभिकथन विफल हो जाता है तो परीक्षण निष्पादन रुक जाएगा।
टेस्ट ऑटोमेशन की सफलता के लिए टेस्ट की निरंतरता और रिकवरी हैंडलिंग बेहद महत्वपूर्ण है, और लंबी अवधि के टेस्ट में इसका सबसे ज्यादा महत्व है। Selenium ऐसे मामलों में जहां प्रत्येक असफल जांच के बाद ब्राउज़र को पुनः आरंभ करना खर्चीला होता है, वहां एरर कलेक्टर सबसे अच्छा उपाय है।

