जब आप एक इकाई परीक्षण सूट लिख रहे होते हैं, तो कुछ गैर-परीक्षण-संबंधित गतिविधियाँ हो सकती हैं जिन्हें आपको करने की आवश्यकता होती है। ये गतिविधियाँ कोई भी रूप ले सकती हैं। परीक्षण करने से पहले आपको डेटाबेस से कनेक्ट करने या संसाधन एकत्र करने की आवश्यकता हो सकती है। प्रत्येक परीक्षण मामले के निष्पादित होने के बाद, आपको कुछ संसाधन जारी करने की आवश्यकता हो सकती है।
एक इकाई परीक्षण वर्ग के दायरे से बाहर इन गैर-परीक्षण-संबंधित गतिविधियों में से कोई भी प्रदर्शन करना असंभव नहीं तो कठिन हो सकता है। आपके परीक्षण वर्ग का सफल निष्पादन इन गतिविधियों पर निर्भर हो सकता है, इसलिए JUnit इस समस्या को हल करने के लिए दो जोड़ी एनोटेशन प्रदान करता है।
@BeforeAll एनोटेशन
एक JUnit परीक्षण वर्ग में एक या अधिक परीक्षण विधियाँ हो सकती हैं। @BeforeAll एनोटेशन इंगित करता है कि एक विशिष्ट विधि को परीक्षण वर्ग में सभी परीक्षण विधियों से पहले निष्पादित करना चाहिए। इस एनोटेशन से जुड़ी विधि परीक्षण वर्ग में परीक्षण विधियों की संख्या की परवाह किए बिना केवल एक बार (परीक्षण की शुरुआत में) निष्पादित होती है।
कोई भी विधि जो @BeforeAll एनोटेशन का उपयोग करती है, उसे कुछ शर्तों का पालन करना चाहिए। इन विधियों में एक शून्य वापसी प्रकार होना चाहिए, सार्वजनिक होना चाहिए, और निजी नहीं होना चाहिए। @BeforeAll एनोटेशन a. को स्थापित करने के लिए आदर्श है
एक डेटाबेस से कनेक्शन या एक नई फाइल बनाना। यह आलेख यह दिखाने के लिए कैलकुलेटर परीक्षण वर्ग का उपयोग करता है कि आप @BeforeAll एनोटेशन का उपयोग कैसे कर सकते हैं।कैलकुलेटर क्लास
पैकेट कॉम.एप;
जनताकक्षाकैलकुलेटर{
जनतास्थिरपूर्णांकजोड़ें(पूर्णांक अंक 1, पूर्णांक अंक 2){
वापसी num1 + num2;
}
जनतास्थिरपूर्णांकघटाना(पूर्णांक अंक 1, पूर्णांक अंक 2){
वापसी अंक 1 - अंक 2;
}
जनतास्थिरपूर्णांकगुणा(पूर्णांक अंक 1, पूर्णांक अंक 2){
वापसी अंक 1 * अंक 2;
}
जनतास्थिरपूर्णांकविभाजित करना(पूर्णांक अंक 1, पूर्णांक अंक 2){
वापसी num1 / num2;
}
}
कैलकुलेटर टेस्ट क्लास
आयातस्थिरसंगठनजूनिटबृहस्पति.apiअभिकथन.*;
आयातसंगठनजूनिटबृहस्पति.api।सबसे पहले;
आयातसंगठनजूनिटबृहस्पति.api।परीक्षण;
आयातसंगठनजूनिटबृहस्पति.api।प्रदर्शित होने वाला नाम;@DisplayName("टेस्ट क्लास प्रदर्शित करती है कि कैसे करें उपयोग इससे पहलेतथाबाद में एनोटेशन।")
कक्षाकैलकुलेटर परीक्षण{
@सबसे पहले
जनतास्थिरशून्यपावरऑन कैलकुलेटर(){
System.out.println("कैलकुलेटर चालू है");
}@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो दो पूर्णांक मान जोड़ती है।")
जनताशून्यपरीक्षणजोड़ें(){
मुखर एक्वाल्स(7, कैलकुलेटर।जोड़ें(3, 4));
}@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो एक पूर्णांक मान को दूसरे से घटाती है।")
जनताशून्यपरीक्षण घटाना(){
मुखर एक्वाल्स(6, कैलकुलेटरघटाना(9, 3));
}@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो दो पूर्णांक मानों को गुणा करती है")
जनताशून्यपरीक्षणगुणा(){
मुखर एक्वाल्स(10, कैलकुलेटर.गुणा(5, 2));
}
@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो एक पूर्णांक मान को दूसरे से विभाजित करती है")
जनताशून्यटेस्टडिवाइड(){
मुखर एक्वाल्स(2, कैलकुलेटर।विभाजित करना(4, 2));
}
}
इस वर्ग में, @BeforeAll एनोटेशन powerOnCalculator () विधि के साथ काम करता है, जो किसी भी परीक्षण चलाने से पहले "कैलकुलेटर चालू है" प्रिंट करता है। सफल परीक्षण निष्पादन निम्नलिखित परीक्षण रिपोर्ट को प्रिंट करता है:
जैसा कि आप देख सकते हैं कि @BeforeAll एनोटेशन से जुड़ी विधि परीक्षण रिपोर्ट में प्रकट नहीं होती है। हालांकि, अगर @BeforeAll एनोटेशन पद्धति में कोई त्रुटि है, तो परीक्षण रिपोर्ट के परिणाम इसे विफलता के साथ इंगित करेंगे।
@BeforeEach एनोटेशन
@BeforeAll एनोटेट विधि की तरह, @BeforeEach एनोटेटेड विधि परीक्षण रिपोर्ट में दिखाई नहीं देगी। परीक्षण वर्ग में प्रत्येक परीक्षण विधि से पहले @BeforeEach एनोटेट विधि निष्पादित होती है। इसलिए, यदि किसी परीक्षण वर्ग में दो परीक्षण विधियाँ हैं, तो @BeforeEach एनोटेशन दो बार निष्पादित होगा।
आयातस्थिरसंगठनजूनिटबृहस्पति.apiअभिकथन.*;
आयातसंगठनजूनिटबृहस्पति.api।सबसे पहले;
आयातसंगठनजूनिटबृहस्पति.api.प्रत्येक से पहले;
आयातसंगठनजूनिटबृहस्पति.api।परीक्षण;
@DisplayName("टेस्ट क्लास प्रदर्शित करती है कि कैसे करें उपयोग इससे पहलेतथाबाद में एनोटेशन।")
कक्षाकैलकुलेटर परीक्षण{
@सबसे पहले
जनतास्थिरशून्यपावरऑन कैलकुलेटर(){
System.out.println("कैलकुलेटर चालू है");
}
@ प्रत्येक से पहले
जनताशून्यस्पष्ट कैलकुलेटर(){
System.out.println("कैलकुलेटर तैयार है");
}
@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो दो पूर्णांक मान जोड़ती है।")
जनताशून्यपरीक्षणजोड़ें(){
मुखर एक्वाल्स(7, कैलकुलेटर।जोड़ें(3, 4));
}
@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो एक पूर्णांक मान को दूसरे से घटाती है।")
जनताशून्यपरीक्षण घटाना(){
मुखर एक्वाल्स(6, कैलकुलेटरघटाना(9, 3));
}
@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो दो पूर्णांक मानों को गुणा करती है")
जनताशून्यपरीक्षणगुणा(){
मुखर एक्वाल्स(10, कैलकुलेटर.गुणा(5, 2));
}
@परीक्षण
@प्रदर्शित होने वाला नाम("परीक्षण विधि जो एक पूर्णांक मान को दूसरे से विभाजित करती है")
जनताशून्यटेस्टडिवाइड(){
मुखर एक्वाल्स(2, कैलकुलेटर।विभाजित करना(4, 2));
}
}
कैलक्यूलेटरटेस्ट क्लास में @BeforeEach एनोटेशन जोड़ने से निम्न आउटपुट उत्पन्न होता है:
@BeforeEach एनोटेशन से जुड़ी विधि प्रत्येक परीक्षण विधि से पहले एक बार चार बार निष्पादित होती है। आपको ध्यान देना चाहिए कि @BeforeEach विधि स्थिर नहीं है, एक शून्य वापसी प्रकार है, और निजी नहीं है, क्योंकि ये अनिवार्य शर्तें हैं। यह भी ध्यान रखना महत्वपूर्ण है कि @BeforeEach एनोटेशन से जुड़ी विधि @BeforeAll पद्धति के बाद चलती है।
@आफ्टरऑल एनोटेशन
परीक्षण वर्ग में सभी परीक्षण विधियों के निष्पादन को पूरा करने के बाद @AfterAll एनोटेशन के साथ एक विधि निष्पादित होगी। @AfterAll एनोटेशन के लिए आदर्श है मूल फ़ाइल संचालन, जैसे किसी फ़ाइल को बंद करना, या किसी डेटाबेस से डिस्कनेक्ट करना। @AfterAll एनोटेशन @BeforeAll एनोटेशन का प्रतिपक्ष है। @BeforeAll एनोटेशन की तरह, @AfterAll एनोटेशन स्थिर होना चाहिए, शून्य होना चाहिए, और बहुत कुछ निजी नहीं होना चाहिए।
@आख़िरकार
जनतास्थिरशून्यपावरऑफ कैलकुलेटर(){
System.out.println("कैलकुलेटर बंद है");
}
मौजूदा कैलकुलेटरटेस्ट क्लास में @AfterAll एनोटेट विधि जोड़ने से कंसोल पर निम्न आउटपुट प्रिंट होता है:
ध्यान दें कि powerOffCalculator() विधि, जो @AfterAll एनोटेशन का उपयोग करती है, सभी परीक्षण विधियों के निष्पादित होने के बाद, परीक्षण वर्ग के अंत में प्रिंट करती है।
@AfterEach एनोटेशन
@AfterEach एनोटेशन @BeforeEach एनोटेशन का प्रतिपक्ष है। उनके पास वही अनिवार्य शर्तें हैं, जो @BeforeAll और @AfterAll एनोटेशन से थोड़ी अलग हैं। @BeforeEach एनोटेशन (उनके नामों के अलावा) से @AfterEach एनोटेशन में जो अंतर है, वह यह है कि @AfterEach विधि प्रत्येक परीक्षण विधि के बाद चलती है।
@एक के बाद एक
जनताशून्यवापसी परिणाम(){
System.out.println("परिणाम तैयार हैं");
}
कैलकुलेटरटेस्ट क्लास को निष्पादित करने से कंसोल पर निम्न आउटपुट प्रिंट होता है:
आउटपुट से पता चलता है कि @AfterEach एनोटेशन (रिटर्न रिसेट्स) से जुड़ी विधि चार बार प्रिंट होती है। returnResults() विधि का प्रत्येक निष्पादन प्रत्येक इकाई परीक्षण के निष्पादन के बाद ही होता है। यह इस तथ्य से स्पष्ट है कि returnResults() विधि आउटपुट @BeforeEach एनोटेशन से जुड़ी विधि से प्रत्येक आउटपुट के बाद दिखाई देता है।
एनोटेशन का उपयोग करके अपने टेस्ट सूट को पॉलिश करें
जुनीट आपको जोड़ी एनोटेशन से पहले और बाद में गैर-परीक्षण संबंधित प्रक्रियाओं को संभालने की अनुमति देता है। ये चार एनोटेशन कई अन्य एनोटेशन की सूची से संबंधित हैं जो आपके परीक्षणों में मूल्य जोड़ते हैं। जुनीट का एक और एनोटेशन @DisplayName है।
दो कोड उदाहरण जो संपूर्ण कैलकुलेटरटेस्ट वर्ग को प्रदर्शित करते हैं, @DisplayName एनोटेशन का उपयोग करते हैं। @DisplayName एनोटेशन आपको अपनी परीक्षण कक्षाओं और परीक्षण विधियों के लिए अधिक सार्थक नाम बनाने में मदद करता है।