JUnit उदाहरण के साथ ErrorCollector @Rule

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

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

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

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

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

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

नोटसरल assert या try/catch ब्लॉक का उपयोग करने की स्थिति में, त्रुटि संग्राहक विधि का उपयोग करना संभव नहीं होगा।

नमूना कोड

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

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.		
    }		
}	

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

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

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

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

@Rule				
public ErrorCollector collector= new ErrorCollector();

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());							
   }		
}      

आउटपुट:

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

टेस्टरनर.Java उत्पादन

के लाभ JUnit त्रुटि संग्राहक

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

  1. assertEquals(String message, Object expected, Object actual) जो तुलना करता है कि दो ऑब्जेक्ट बराबर हैं।
  2. इसी प्रकार, assertTrue(Boolean condition) यह दावा करता है कि शर्त सत्य है।

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

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

सारांश

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