JUnit एनोटेशन क्या है?
JUNIT ANNOTATIONS वाक्य रचना मेटा-डेटा का एक विशेष रूप है जिसे बेहतर कोड पठनीयता और संरचना के लिए जावा स्रोत कोड में जोड़ा जा सकता है। चर, पैरामीटर, पैकेज, तरीके और कक्षाएं एनोटेट की जा सकती हैं। Junit4 में एनोटेशन की शुरुआत की गई, जो जावा कोड को अधिक पठनीय और सरल बनाता है। Junit3 और Junit4 के बीच यह बड़ा अंतर है कि Junit4 एनोटेशन आधारित है।
Junit5 में एनोटेशन के ज्ञान के साथ, कोई भी आसानी से एक JUnit टेस्ट सीख और कार्यान्वित कर सकता है। नीचे महत्वपूर्ण और अक्सर उपयोग किए जाने वाले एनोटेशन की सूची दी गई है:
क्र.सं. | एनोटेशन | विवरण |
---|---|---|
1 है। | @परीक्षा | यह एनोटेशन org.junit.TestCase का एक प्रतिस्थापन है जो इंगित करता है कि सार्वजनिक शून्य विधि जिसके साथ इसे संलग्न किया गया है उसे परीक्षण प्रकरण के रूप में निष्पादित किया जा सकता है। |
२। | @इससे पहले | इस एनोटेशन का उपयोग तब किया जाता है जब आप प्रत्येक स्टेटमेंट केस से पहले कुछ स्टेटमेंट्स जैसे प्रीकॉन्डिशंस निष्पादित करना चाहते हैं। |
३। | @कक्षा से पहले | इस एनोटेशन का उपयोग तब किया जाता है, जब आप सभी परीक्षण मामलों से पहले कुछ बयानों को निष्पादित करना चाहते हैं, जैसे सभी परीक्षण मामलों से पहले परीक्षण कनेक्शन को निष्पादित किया जाना चाहिए। |
४। | @उपरांत | इस एनोटेशन का उपयोग तब किया जा सकता है, जब आप प्रत्येक टेस्ट केस के बाद कुछ स्टेटमेंट्स को निष्पादित करना चाहते हैं, जैसे कि वेरिएबल को रीसेट करना, अस्थायी फाइलों को हटाना, वेरिएबल्स आदि। |
५। | @क्लास के बाद | यदि आप सभी परीक्षण मामलों को निष्पादित करने के बाद संसाधनों को जारी करना चाहते हैं तो इस एनोटेशन का उपयोग किया जा सकता है। |
६। | @ संकेत | यदि आप परीक्षण निष्पादन के दौरान कुछ परीक्षण मामलों को अक्षम करना चाहते हैं तो इस एनोटेशन का उपयोग परीक्षण निष्पादन के दौरान कुछ कथनों को अनदेखा करना चाहते हैं। |
।। | @ टेस्ट (टाइमआउट = 500) | यदि आप कुछ SLA (सेवा स्तर समझौते) के तहत काम कर रहे हैं, और परीक्षण को कुछ निर्दिष्ट समय के भीतर पूरा करने की आवश्यकता है, तो यह एनोटेशन का उपयोग किया जा सकता है। |
।। | @ टेस्ट (अपेक्षित = अवैध विरोधाभास। अपवाद) | यदि आप परीक्षण निष्पादन के दौरान कुछ अपवाद को हैंडल करना चाहते हैं तो इस एनोटेशन का उपयोग किया जा सकता है। उदाहरण के लिए, यदि आप जांचना चाहते हैं कि कोई विशेष विधि निर्दिष्ट अपवाद को फेंक रही है या नहीं। |
इस ट्यूटोरियल में, आप सीखेंगे-
- JUnit एनोटेशन उदाहरण
- जुनीत एसेर क्लास
- JUnit टेस्ट मामले वर्ग
- JUnit TestResult Class
- JUnit टेस्ट सूट क्लास
JUnit एनोटेशन उदाहरण
आइए सरल प्रिंट स्टेटमेंट के साथ महत्वपूर्ण JUnit एनोटेशन को कवर करने वाला एक क्लास बनाएं और इसे टेस्ट रनर क्लास के साथ निष्पादित करें:
चरण 1) नीचे दिए गए जावा वर्ग पर विचार करें जो विभिन्न तरीकों से ऊपर सूचीबद्ध एनोटेशन से जुड़े हैं:
जूनिटनोटेशन
पैकेज गुरु 99. अर्जुन;आयात स्थैतिक org.junit.Assert.assertEquals;आयात स्थिर org.junit.Assert.assertFalse;आयात java.util.ArrayList;आयात org.junit.After;आयात org.junit.AfterClass;आयात org.junit.Before;आयात org.junit.BeforeClass;आयात org.junit.Ignore;आयात org.junit.Test;सार्वजनिक वर्ग JunitAnnotationsExample {निजी ArrayList <स्ट्रिंग> सूची;@कक्षा से पहलेसार्वजनिक स्थैतिक शून्य m1 () {System.out.println ("सभी परीक्षण मामलों से पहले निष्पादित @BeforeClass का उपयोग करके");}@इससे पहलेसार्वजनिक शून्य m2 () {सूची = नया एरियर सूची <स्ट्रिंग> ();System.out.println ("प्रत्येक परीक्षण मामलों से पहले निष्पादित @Before एनोटेशन का उपयोग करते हुए");}@क्लास के बादसार्वजनिक स्थैतिक शून्य m3 () {System.out.println ("सभी परीक्षणों के बाद निष्पादित @AfterClass का उपयोग करके");}@उपरांतसार्वजनिक शून्य m4 () {list.clear ();System.out.println ("प्रत्येक परीक्षण के बाद निष्पादित @After का उपयोग करके");}@परीक्षासार्वजनिक शून्य m5 () {list.add ("परीक्षण");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@नज़रअंदाज़ करनासार्वजनिक शून्य m6 () {System.out.println ("@Ignore का उपयोग करके, इस निष्पादन को अनदेखा कर दिया जाता है");}@ टेस्ट (टाइमआउट = 10)सार्वजनिक शून्य m7 () {System.out.println ("@Test (टाइमआउट का उपयोग करके), इसका उपयोग JUnit4 परीक्षण मामले में टाइमआउट को लागू करने के लिए किया जा सकता है");}@ टेस्ट (अपेक्षित = NoSuchMethodException.class)सार्वजनिक शून्य m8 () {System.out.println ("@Test (अपेक्षित) का उपयोग करके, यह अपने निष्पादन के दौरान निर्दिष्ट अपवाद की जांच करेगा");}}
चरण 2) परीक्षण के ऊपर निष्पादित करने के लिए एक परीक्षण धावक वर्ग बनाएं:
TestRunner.java
पैकेज गुरु 99. अर्जुन;आयात org.junit.runner.JUnitCore;आयात org.junit.runner.Result;आयात org.junit.runner.notification.Failure;पब्लिक क्लास टेस्टरनर {सार्वजनिक स्थैतिक शून्य main (String [] args) {परिणाम परिणाम = JUnitCore.runClasses (JunitAnnotationsExample.class);के लिए (विफलता विफलता: result.getFailures ()) {System.out.println (विफलता.toString ());}System.out.println ("परिणाम ==" + result.wasSuccessful ());}}
अपेक्षित परिणाम
- सभी परीक्षण मामलों को एक-एक करके निष्पादित किया जाएगा, और सभी प्रिंट स्टेटमेंट को एक कंसोल पर देखा जा सकता है।
- जैसा कि उपरोक्त तालिका में चर्चा की गई है, @Before, @BeforeClass [पद्धति m1 () और m2 ()] को क्रमशः प्रत्येक और सभी परीक्षण मामलों से पहले निष्पादित किया जाएगा।
- उसी तरह @ after, @ afterClass (विधि m3 () और m4 ()) को क्रमशः प्रत्येक और सभी परीक्षण मामलों के बाद निष्पादित किया जाएगा। @ignore (विधि m6 ()) को परीक्षण की अनदेखी के रूप में माना जाएगा।
आइए उपरोक्त जावा वर्ग में उपयोग किए गए परीक्षण मामलों का विस्तार से विश्लेषण करें:
- नीचे दिए अनुसार विधि m5 () पर विचार करें:
@परीक्षासार्वजनिक शून्य m5 () {list.add ("परीक्षण");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
उपरोक्त विधि में जैसा कि आप चर "सूची" में एक स्ट्रिंग जोड़ रहे हैं
- list.isEmpty () गलत वापस आएगा।
- assertFalse (list.isEmpty ()) सही लौटना चाहिए।
- नतीजतन, टेस्ट केस पास हो जाएगा ।
जैसा कि आपने सूची में केवल एक स्ट्रिंग जोड़ा है, इसलिए आकार एक है।
- list.size () को int मान को "1" के रूप में वापस करना चाहिए।
- इसलिए assertEquals (1, list.size ()) को सही लौटना चाहिए।
- नतीजतन, टेस्ट केस पास हो जाएगा ।
- नीचे दिए गए अनुसार विधि m7 () पर विचार करें:
@ टेस्ट (टाइमआउट = 10)सार्वजनिक शून्य m7 () {System.out.println ("@Test (टाइमआउट का उपयोग करके), इसका उपयोग JUnit4 परीक्षण मामले में टाइमआउट को लागू करने के लिए किया जा सकता है");}
जैसा कि @Test (टाइमआउट = 10) के ऊपर चर्चा की गई है, एनोटेशन का उपयोग टेस्ट केस में टाइमआउट लागू करने के लिए किया जाता है।
- विधि M8 पर विचार करें () नीचे दिए गए अनुसार:
@ टेस्ट (अपेक्षित = NoSuchMethodException.class)सार्वजनिक शून्य m8 () {System.out.println ("@Test (अपेक्षित) का उपयोग करके, यह अपने निष्पादन के दौरान निर्दिष्ट अपवाद की जांच करेगा");}
जैसा कि @Test (अपेक्षित) से ऊपर चर्चा की गई है, इसके निष्पादन के दौरान निर्दिष्ट अपवाद की जाँच करेगा ताकि विधि m8 () "कोई ऐसी विधि धारणा " न फेंके। नतीजतन, परीक्षण एक अपवाद के साथ निष्पादित किया जाएगा।
जैसा कि सभी परीक्षण मामलों को पारित किया जाता है, इसके परिणामस्वरूप एक सफल परीक्षण निष्पादन होता है।
वास्तविक परिणाम
जैसा कि उपरोक्त उदाहरण में तीन परीक्षण मामले हैं, सभी परीक्षण मामलों को एक-एक करके निष्पादित किया जाएगा। नीचे उत्पादन देखें :
नीचे देखें प्रिंट स्टेटमेंट जो कंसोल पर देखे जा सकते हैं:
सभी परीक्षण मामलों से पहले निष्पादित @BeforeClass का उपयोग करना
प्रत्येक परीक्षण मामलों से पहले निष्पादित @Before एनोटेशन का उपयोग करना
@After का उपयोग करके, प्रत्येक परीक्षण मामलों के बाद निष्पादित किया गया
प्रत्येक परीक्षण मामलों से पहले निष्पादित @Before एनोटेशन का उपयोग करना
@ टेस्ट (टाइमआउट) का उपयोग करते हुए, इसका उपयोग JUnit4 परीक्षण मामले में टाइमआउट को लागू करने के लिए किया जा सकता है
@After का उपयोग करके, प्रत्येक परीक्षण मामलों के बाद निष्पादित किया गया
प्रत्येक परीक्षण मामलों से पहले निष्पादित @Before एनोटेशन का उपयोग करना
@ टेस्ट (अपेक्षित) का उपयोग करते हुए, यह निष्पादन के दौरान निर्दिष्ट अपवाद की जांच करेगा
@After का उपयोग करके, प्रत्येक परीक्षण मामलों के बाद निष्पादित किया गया
@AfterClass का उपयोग करना, सभी परीक्षण मामलों के बाद निष्पादित किया गया
जुनीत एसेर क्लास
यह वर्ग परीक्षण के मामले को लिखने में उपयोगी मुखर तरीकों का एक समूह प्रदान करता है। यदि सभी मुखर कथन पारित किए जाते हैं, तो परीक्षण के परिणाम सफल होते हैं। यदि कोई मुखर कथन विफल हो जाता है, तो परीक्षण के परिणाम विफल होते हैं।
जैसा कि आपने पहले देखा था, नीचे दी गई तालिका में मुखर तरीके और विवरण दिए गए हैं:
क्र.सं. | तरीका | विवरण |
---|---|---|
1 है। | शून्य दावे (बूलियन अपेक्षित, बूलियन वास्तविक) | यह जाँचता है कि क्या दो मान ऑब्जेक्ट क्लास के समान तरीके के समान हैं |
२। | शून्य मुखर (बूलियन स्थिति) | कार्यक्षमता यह जांचने के लिए है कि एक स्थिति झूठी है। |
३। | शून्य | "assertNotNull" कार्यक्षमता यह जांचने के लिए है कि कोई ऑब्जेक्ट अशक्त नहीं है। |
४। | शून्य असत्य | "assertNull" कार्यक्षमता यह जांचने के लिए है कि एक ऑब्जेक्ट अशक्त है। |
५। | शून्य जोर | "assertTrue" कार्यक्षमता यह जांचने के लिए है कि एक शर्त सही है। |
६। | शून्य विफल () | यदि आप किसी भी त्रुटि को फेंकना चाहते हैं, तो आप असफल () हैं जो हमेशा एक असफल फैसले का परिणाम होता है। |
।। | शून्य का दावा | "assertSame" कार्यक्षमता यह जांचने के लिए है कि दो ऑब्जेक्ट एक ही ऑब्जेक्ट को संदर्भित करते हैं। |
।। | शून्य | "assertNotSame" कार्यक्षमता यह जांचने के लिए है कि दो ऑब्जेक्ट एक ही ऑब्जेक्ट को संदर्भित नहीं करते हैं। |
JUnit टेस्ट मामले वर्ग
कई परीक्षण चलाने के लिए, TestCase class org.junit.TestCase पैकेज में उपलब्ध है। एनोटेशन @ टेस्ट जेयूनिट को बताता है कि यह सार्वजनिक शून्य विधि (टेस्ट केस यहां) जिसके साथ यह जुड़ा हुआ है, को टेस्ट केस के रूप में चलाया जा सकता है।
नीचे दी गई तालिका org.junit.TestCase वर्ग में उपलब्ध कुछ महत्वपूर्ण तरीकों को दिखाती है :
क्र.सं. | तरीका | विवरण |
---|---|---|
1 है। | int countTestCases () | इस पद्धति का उपयोग यह देखने के लिए किया जाता है कि रन (TestResult tr) विधि द्वारा कितने परीक्षण मामलों को निष्पादित किया गया है । |
२। | TestResult createResult () | इस विधि का उपयोग TestResult ऑब्जेक्ट बनाने के लिए किया जाता है । |
३। | स्ट्रिंग getName () | यह विधि एक स्ट्रिंग लौटाती है जो एक टेस्टकेस के अलावा और कुछ नहीं है । |
४। | TestResult रन () | इस पद्धति का उपयोग किसी परीक्षण को निष्पादित करने के लिए किया जाता है जो TestResult ऑब्जेक्ट देता है |
५। | शून्य रन (TestResult परिणाम) | इस पद्धति का उपयोग TestResult ऑब्जेक्ट के परीक्षण को निष्पादित करने के लिए किया जाता है जो कुछ भी वापस नहीं करता है। |
६। | शून्य सेटनाम (स्ट्रिंग नाम) | इस विधि का उपयोग TestCase का नाम सेट करने के लिए किया जाता है । |
।। | व्यर्थ व्यवस्था() | इस पद्धति का उपयोग संसाधन संघ कोड लिखने के लिए किया जाता है। उदाहरण के लिए एक डेटाबेस कनेक्शन बनाएँ। |
।। | शून्य अश्रु () | इस विधि का उपयोग संसाधन रिलीज कोड लिखने के लिए किया जाता है। जैसे ट्रांजैक्शन ऑपरेशन करने के बाद रिलीज डेटाबेस कनेक्शन। |
JUnit TestResult Class
जब आप किसी परीक्षण को निष्पादित करते हैं, तो यह एक परिणाम ( TestResult ऑब्जेक्ट के रूप में) देता है। यह TestResult ऑब्जेक्ट परिणामी ऑब्जेक्ट का विश्लेषण करने के लिए उपयोग किया जा सकता है। यह परीक्षा परिणाम विफलता या सफल हो सकता है। Org.junit.TestResult वर्ग में प्रयुक्त महत्वपूर्ण विधियों के लिए नीचे दी गई तालिका देखें:क्र.सं. | तरीका | विवरण |
---|---|---|
1 है। | शून्य जोड़ना | यदि आपको परीक्षण में कोई त्रुटि जोड़ने की आवश्यकता है तो इस पद्धति का उपयोग किया जाता है। |
२। | शून्य जोड़ना | यदि आपको विफलताओं की सूची में विफलता की आवश्यकता है, तो इस पद्धति का उपयोग किया जाता है। |
३। | शून्य एंडटेस्ट (टेस्ट टेस्ट) | इस पद्धति का उपयोग यह सूचित करने के लिए किया जाता है कि एक परीक्षण किया जाता है (पूरा) |
४। | int errorCount () | परीक्षण निष्पादन के दौरान त्रुटि का पता लगाने के लिए इस पद्धति का उपयोग किया जाता है। |
५। | गणना | यह विधि केवल त्रुटियों का एक संग्रह (यहां गणना) लौटाती है। |
६। | int विफलता | परीक्षण निष्पादन के दौरान पाई गई त्रुटियों की गिनती प्राप्त करने के लिए इस पद्धति का उपयोग किया जाता है। |
।। | शून्य रन (TestCase परीक्षण) | इस विधि का उपयोग परीक्षण मामले को निष्पादित करने के लिए किया जाता है। |
।। | int रनकाउंट () | यह विधि केवल निष्पादित परीक्षा को गिनाती है। |
९। | शून्य स्टार्टटेस्ट (टेस्ट टेस्ट) | इस पद्धति का उपयोग यह सूचित करने के लिए किया जाता है कि एक परीक्षण शुरू किया गया है। |
१०। | शून्य रोक () | इस विधि का उपयोग रन को रोकने के लिए परीक्षण करने के लिए किया जाता है। |
JUnit टेस्ट सूट क्लास
यदि आप एक निर्दिष्ट क्रम में कई परीक्षणों को निष्पादित करना चाहते हैं, तो यह सभी परीक्षणों को एक स्थान पर जोड़कर किया जा सकता है। इस जगह को टेस्ट सूट कहा जाता है।
Org.junit.TestSuite वर्ग में प्रयुक्त महत्वपूर्ण विधियों के लिए नीचे दी गई तालिका देखें :
क्र.सं. | तरीका | विवरण |
---|---|---|
1 है। | शून्य addTest (परीक्षण परीक्षण) | यदि आप सुइट में कोई परीक्षण जोड़ना चाहते हैं तो इस पद्धति का उपयोग किया जाता है। |
२। | शून्य addTestSuite (वर्ग <; विस्तार TestCase> testClass) | यदि आप सुइट में परीक्षण जोड़ते समय कक्षा को निर्दिष्ट करना चाहते हैं तो इस पद्धति का उपयोग किया जाता है। |
३। | int countTestCases () | यदि आप परीक्षण मामलों की संख्या की गणना करना चाहते हैं तो इस पद्धति का उपयोग किया जाता है। |
४। | स्ट्रिंग getName () | इस विधि का उपयोग परीक्षण सूट के नाम को प्राप्त करने के लिए किया जाता है। |
५। | शून्य रन (TestResult परिणाम) | इस विधि का उपयोग TestResult ऑब्जेक्ट में एक परीक्षण को निष्पादित करने और परीक्षण के परिणाम को इकट्ठा करने के लिए किया जाता है । |
६। | शून्य सेटनाम (स्ट्रिंग नाम) | इस विधि का उपयोग TestSuite के नाम को सेट करने के लिए किया जाता है । |
।। | टेस्ट टेस्ट (इंट इंडेक्स) | यदि आप दिए गए सूचकांक पर परीक्षण वापस करना चाहते हैं तो इस पद्धति का उपयोग किया जाता है। |
।। | int testCount () | यदि आप सुइट में कई परीक्षण करना चाहते हैं तो इस पद्धति का उपयोग किया जाता है। |
९। | स्टेटिक टेस्ट चेतावनी (स्ट्रिंग संदेश) | यह विधि एक परीक्षण देता है जो विफल हो जाएगा और चेतावनी संदेश लॉग करेगा। |
सारांश:
- JUnit एक पोर्टेबल API प्रदान करता है, जो सभी महत्वपूर्ण कक्षाओं और एनोटेशन को एक यूनिट टेस्ट लिखने में उपयोगी प्रदान करता है।
- टेस्ट केस लिखते समय जो कक्षाएं बहुत उपयोगी होती हैं
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- महत्वपूर्ण और अक्सर उपयोग किए जाने वाले एनोटेशन की सूची
@इससे पहले
@कक्षा से पहले
@उपरांत
@क्लास के बाद
@परीक्षा
@नज़रअंदाज़ करना