जुनीट एक तृतीय-पक्ष, ओपन सोर्स यूनिट परीक्षण ढांचा है। यह परियोजना केंट बेक और एरिच गामा द्वारा 1995 के अंत में शुरू की गई थी। इसने डेवलपर्स के समुदाय में तेजी से रुचि पैदा की, जो विशेष रूप से परीक्षण-संचालित विकास में काम करते हैं। जुनीट को शुरुआत में स्मॉलटाक में पेश किया गया था, लेकिन बाद में इसे जावा में पोर्ट किया गया, जिसने इसे यूनिट परीक्षण के वास्तविक मानक के रूप में जल्दी से उठाया। JUnit की लोकप्रियता इस हद तक बढ़ गई कि, कई अन्य समकालीन भाषाओं जैसे C#, Perl, Python, PHP, Ruby, Visual Basic, C++, आदि की जरूरतों को पूरा करने के लिए, एक सामान्य xUnit ढांचा विकसित किया गया जहां पत्र 'x' को भाषा के पहले अक्षर से बदल दिया जाता है, जैसे जावा के लिए जुनीट, रूबी के लिए रूनीट, और इसी तरह। यह आलेख जावा इकाई परीक्षण के वास्तविक मानक द्वारा उपयोग किए गए इस ढांचे का एक सिंहावलोकन प्रदान करता है।
परीक्षण अवलोकन
अनुप्रयोग विकास के जीवन चक्र में परीक्षण एक महत्वपूर्ण चरण है। परीक्षण का मुख्य उद्देश्य आवश्यक विशिष्टताओं के आधार पर एक कार्यक्रम का मूल्यांकन करना है। लक्ष्य कुछ परीक्षण मामलों को बनाना है जो सतह की त्रुटियां, अंतराल, कोई विसंगतियां या अप्रत्याशित परिणाम, जितना संभव हो सके। इस सरल अवधारणा से जुड़ी कुछ विस्तृत प्रक्रियाएँ हैं। लेकिन संक्षेप में कहें तो यह तीन स्तरों पर किया जाता है। जब परीक्षण बहुत बारीक या व्यक्तिगत घटक स्तर पर किया जाता है, तो इसे इकाई परीक्षण कहा जाता है; जब वे एक सॉफ्टवेयर डिजाइन के खिलाफ घटकों के बीच इंटरफेस की जांच करने के लिए संयुक्त होते हैं, तो इसे एकीकरण परीक्षण कहा जाता है; और अंत में, जब पूरी प्रणाली को एकीकृत किया जाता है और यह सत्यापित करने के लिए परीक्षण किया जाता है कि सिस्टम समग्र रूप से निर्दिष्ट आवश्यकता को पूरा करता है, तो इसे सिस्टम परीक्षण कहा जाता है। ।
इकाई परीक्षण
संक्षेप में, एक इकाई परीक्षण करना कोड की एक विशिष्ट इकाई के व्यवहार की जांच करने का एक तरीका है। जावा में, कोड की इकाई संदर्भ के अनुसार एक विधि या एक वर्ग या एक मॉड्यूल भी हो सकता है। यदि यह एक विधि है, उदाहरण के लिए, परीक्षण का फोकस विधि को लागू करने के लिए अनुमत सही वस्तु संदर्भ का मूल्यांकन करने पर है, मापदंडों का प्रकार और स्वीकार्य मान, आदिम मूल्य श्रेणियां, वापसी प्रकार और मूल्य, और इसी तरह। विचार यह है कि विधि को ग्रिल किया जाए ताकि इसे अपनी समस्या को इनायत से संभालने के लिए पर्याप्त मजबूत बनाया जा सके और जो इसके दायरे से बाहर हैं उन्हें इसके अनुबंध को पूरा करने के अलावा फेंक दें।
इसलिए, इकाई परीक्षण किसी भी कार्यक्रम के मूल्यांकन के बुनियादी निर्माण खंड का निर्माण करता है। वास्तव में, प्रत्येक प्रोग्रामर किसी न किसी प्रकार की इकाई परीक्षण करता है क्योंकि कुछ डमी डेटा/केस के साथ कोड के परिणाम की जांच करने के लिए कोड लिखता है। यूनिट परीक्षण इस प्रकार परीक्षणों के उस पृथक संग्रह को दी गई औपचारिक स्थिति है। यह अत्यंत महत्वपूर्ण है कि एक कोड परीक्षण के विभिन्न चरणों की कठोरता से गुजरता है। इकाई परीक्षण, इसके महत्व के अलावा, यह भी बहुत आम है। केंट बेक और एरिच गामा जैसे लोगों ने इसके लिए एक ढांचा बनाने के बारे में सोचा ताकि प्रोग्रामर को एक संरचित वातावरण मिले और इनमें से कई कार्यों को स्वचालित कर सकें। आखिरकार, यही एक ढांचा है। आम तौर पर, यह एक सुसंगत प्रोग्राम संरचना प्रदान करता है जो पुन:प्रयोज्य और अनुप्रयोगों में साझा करने योग्य है। एक प्रोग्रामर उन्हें मौजूदा एप्लिकेशन में शामिल कर सकता है और अपनी विशिष्ट आवश्यकता के अनुसार उनका विस्तार कर सकता है।
एक त्वरित उदाहरण
तापमान . में एकल विधि की जांच करने के लिए एक साधारण इकाई परीक्षण कोड JUnit ढांचे का उपयोग किए बिना वर्ग इस प्रकार है:
package org.mano.unittest.examples; public class Circle { double area(double radius) { returnMath.PI* radius * radius; } }
अब, क्षेत्र . की इकाई परीक्षण के लिए कोड लिखते हैं विधि।
package org.mano.unittest.examples; public class CircleTest { public int errCounter= 0; public void testCircleArea() { Circle circle = new Circle(); double area = circle.area(12); if (area < 452 && area > 453) { throw new IllegalStateException("Wrong calculation!: " + area); } } public static void main(String[] args) { TestCircle test = new TestCircle(); try { test.testCircleArea(); } catch (Throwable e) { test.errCounter++; e.printStackTrace(); } if (test.errCounter> 0) { throw new IllegalStateException("There were " + test.errCounter+ " error(s)"); } } }
यह एक प्रारंभिक उदाहरण है, लेकिन आपको इस बारे में एक विचार देता है कि बिना किसी ढांचे का उपयोग किए इकाई परीक्षण कैसे किया जा सकता है।
जुनीट टेस्टिंग फ्रेमवर्क
यूनिट परीक्षण के लिए जुनीट ढांचे का उपयोग करने के कई फायदे हैं। यह कई एनोटेशन प्रदान करता है जो जावा में परीक्षण कोड लिखना और चलाना आसान बनाता है:
- मुख्य रूप से, यह इकाई परीक्षण की चिंता को वास्तविक परियोजना कोड से अलग करता है, जिससे प्रत्येक इकाई परीक्षण के लिए एक परीक्षण वर्ग उदाहरण और वर्ग लोडर बनाने में सक्षम होता है। ये परीक्षण के अनावश्यक दुष्प्रभावों से मौजूदा कोड को "प्रतिरक्षा" करते हैं।
- जुनीट द्वारा प्रदान किए गए एनोटेशन—जैसे कि @Before, @After, @BeforeClass, @AfterClass —संसाधन आरंभीकरण और संसाधन सुधार दोनों के लिए विधियां हैं।
- एक परीक्षण के परिणाम को सत्यापित करने के लिए कई प्रकार के मुखर तरीके हैं।
- वर्षों में, जुनीट इतना लोकप्रिय हो गया कि कई जावा उपकरण, जैसे कि चींटी और मावेन; और लोकप्रिय आईडीई, जैसे कि ग्रहण , नेटबीन्स , इंटेलिजे आइडिया , और इसी तरह, JUnit के अंतर्निर्मित एकीकरण के साथ आता है।
जावा प्रोजेक्ट में JUnit टेस्ट फ्रेमवर्क का उपयोग करने के लिए, किसी को JUnit JAR फ़ाइल को प्रोजेक्ट क्लास पथ में जोड़ना होगा। यह स्पष्ट रूप से आवश्यक है यदि IDE को JUnit लाइब्रेरी के साथ एकीकृत नहीं किया गया है। प्रक्रिया सरल है। JAR फ़ाइल डाउनलोड करें और इसे प्रोजेक्ट क्लास पथ में जोड़ें।
यहाँ JUnit ढांचे के कुछ महत्वपूर्ण लिंक दिए गए हैं।
- जुनीट आधिकारिक साइट
- जुनीट जावा एपीआई
- जुनीट यूजर गाइड
- GitHub में JUnit सोर्स कोड
जुनीट 4 और उसके पूर्ववर्तियों के विपरीत, जुनीट 5 कुछ महत्वपूर्ण बदलाव लाया। लैम्ब्डा सपोर्ट, नए एनोटेशन और टेस्ट मेथड पैरामीटर इंजेक्शन जैसी कई नई सुविधाओं के अलावा- कोर आर्किटेक्चर में कुछ महत्वपूर्ण संशोधन हुए। जुनीट 5 अब तीन अलग-अलग मॉड्यूल का एक समग्र आर्किटेक्चर है:जुनीट ज्यूपिटर, जुनीट विंटेज, और जुनीट प्लेटफार्म। हालाँकि, परीक्षण मामले के डेवलपर्स को परिवर्तनों की पेचीदगियों के बारे में परेशान होने की आवश्यकता नहीं है। परिवर्तनों का मुख्य रूप से मतलब बेहतर टूल सपोर्ट, कंसिस्टेंसी और क्लीनर एपीआई से है। इन सबसे ऊपर, यह जुनीट 4 के साथ पूरी तरह से पिछड़ा हुआ है। तो, कोई चिंता की बात नहीं है। अधिक विवरण के लिए JUnit 5 उपयोगकर्ता मार्गदर्शिका देखें।
एक त्वरित उदाहरण
JUnit ढांचे के साथ इकाई परीक्षण कैसे किया जा सकता है, इसकी एक झलक पाने के लिए यहां एक बहुत ही सरल उदाहरण दिया गया है। हम कर्मचारी . का उपयोग करते हैं इकाई परीक्षण के लिए कक्षा और इसके कामकाज का एक विचार देने के लिए एक परीक्षण वर्ग बनाएं। उदाहरण 'हैलो वर्ल्ड' कार्यक्रम लिखने की हद तक प्राथमिक है। वास्तविक दुनिया के परीक्षण के मामले, या यहां तक कि यूनिट परीक्षण के एक अच्छे उदाहरण के लिए, अच्छी मात्रा में कोड की आवश्यकता होती है। शायद हम किसी अन्य लेख में कोशिश करेंगे।
package org.mano.unittest.examples; public class Employee { private final String name; private final double basicPay; public Employee(String name, double basicPay) { this.name=name; this.basicPay=basicPay; } public String getName() { return name; } public double getBasicPay() { return basicPay; } } package org.mano.unittest.examples; import org.junit.Test; import static org.junit.Assert.*; public class EmployeeTest { @Test public void constructorInitTest(){ Employee emp=new Employee("Odin", 2300); assertEquals("Odin", emp.getName()); assertEquals(2300, emp.getBasicPay(), 0.001); } } package org.mano.unittest.examples; public class EmployeeTestMain { public static void main(String[] args){ EmployeeTest et=new EmployeeTest(); et.constructorInitTest(); } }
ध्यान दें कि कंस्ट्रक्टर द्वारा निर्धारित केवल दो क्षेत्रों के साथ कर्मचारी वर्ग अपरिवर्तनीय है। क्योंकि केवल कंस्ट्रक्टर विधि परीक्षण के लायक है, हम केवल उसका परीक्षण करेंगे।
परीक्षण वर्ग का नाम कर्मचारी परीक्षण . है कन्वेंशन के अनुसार। एनोटेशन @टेस्ट JUnit को एक परीक्षण विधि के रूप में एक विधि नामित करने में सक्षम बनाता है। अभिकथन . में कई प्रकार के मुखर तरीके हैं कक्षा। यहां, हमने केवल assertEquals . का उपयोग किया है ।
JUnit में लिखित परीक्षण को चलाने के कई तरीके हैं। आमतौर पर, परीक्षण मामले चलने के बाद, यह एक सारांश प्रिंट करता है। हालाँकि, यह इस बात पर निर्भर करता है कि परीक्षण कैसे चलाया जाता है, यह भिन्न हो सकता है। यह आईडीई जैसे एक्लिप्स या इंटेलीजे, या मेवेन, ग्रैडल, आदि जैसे उपकरणों के माध्यम से चल सकता है। कभी-कभी, परीक्षण के बाद केवल यही सूचना प्राप्त होती है कि वह या तो विफल हो गई है या उत्तीर्ण हो गई है।
निष्कर्ष
यूनिट परीक्षण के लिए कई अन्य रूपरेखाएँ हैं। JUnit जावा समुदाय के बीच एक लोकप्रिय इकाई परीक्षण ढांचा है। सिस्टम इंजीनियरिंग चरण के रूप में परीक्षण में इसके साथ बहुत अधिक प्रक्रिया शामिल है। यूनिट टेस्टिंग इसका सिर्फ एक हिस्सा है और दिलचस्प बात यह है कि डेवलपर द्वारा किए जाने वाले बहुत सारे प्ले टेस्ट को यूनिट टेस्टिंग कहा जा सकता है। JUnit, एक परीक्षण ढांचे के रूप में, इसमें मूल्य जोड़ता है। जुनीट द्वारा प्रदान किए गए एनोटेशन और एपीआई कई कार्यों को स्वचालित करते हैं और यूनिट टेस्ट डेवलपर्स के लिए जीवन को बहुत आसान बनाते हैं।