list junit annotations
यह ट्यूटोरियल JUnit 4 बनाम JUnit 5 में एनोटेशन की तुलना के साथ JUnit एनोटेशन के बारे में बताता है:
हमने JUnit परीक्षण मामलों को निष्पादित करने के विभिन्न तरीकों को सीखा और देखा कि हमारे पिछले ट्यूटोरियल में टेस्ट सूट कैसे बनाया और निष्पादित किया जाए।
इस ट्यूटोरियल में, हम JUnit के प्रमुख पहलू को जानेंगे जिसे कहा जाता है व्याख्याएँ। JUnit 4 से शुरू होकर, एनोटेशन जगह में हैं और JUnit को बहुत सरल, अधिक लाभकारी और उपयोग करने के लिए बहुत अधिक उपयोगकर्ता-अनुकूल बनाते हैं।
एनोटेशन एक जावा एपीआई है जो टेस्ट क्लास में परिभाषित विधि के प्रकार को पहचानने के लिए जेवीएम को सक्षम बनाता है। 'जीवनचक्र कॉल बैक एनोटेशन' होते हैं जिनका अक्सर उपयोग किया जाता है।
=> स्क्रैच से जुएंट जानने के लिए यहां जाएं।
आप क्या सीखेंगे:
ज्यूनिट एनोटेशन - जुनेट 4 बनाम जुनीत 5
एक परीक्षण निष्पादन जीवनचक्र के विभिन्न चरणों से गुजरता है जैसा कि नीचे दिया गया है:
- एक परीक्षण शुरू करने से पहले, एक कक्षा की दीक्षा पर कुछ गतिविधियाँ की जानी हैं।
- एक टेस्टकेस का निष्पादन शुरू होने से पहले कुछ अन्य गतिविधियाँ की जानी चाहिए।
- कुछ गतिविधियाँ जिन्हें परीक्षण के निष्पादन के बाद किया जाना चाहिए और
- एक कक्षा में सभी परीक्षणों के निष्पादन के अंत में कुछ गतिविधियाँ।
यह पता लगाने के लिए कि ये गतिविधियाँ जावा जीवन चक्र के प्रत्येक चरण में की जाती हैं, वहाँ कुछ उपयोगकर्ता-परिभाषित तरीके या कार्य करने की आवश्यकता होती है जिन्हें that कहा जाता है जीवनचक्र कॉल-बैक विधियाँ ।
इन का व्यवहार जीवनचक्र कॉल-बैक विधियाँ अंतर्निहित-द्वारा निर्धारित किया जाता है कॉल-बैक एनोटेशन जीवनचक्र ' JUnit में उपयोग किया जाता है।
उदाहरण: आइए हम इन जीवनचक्र को कॉल-बैक विधियों और एनोटेशन से संबंधित करके और भी सरल बनाने का प्रयास करते हैं एक कॉफी वेंडिंग मशीन का परीक्षण।
- एक विधि मशीन () जो जाँचता है कि मशीन चालू होने से पहले पानी, दूध, और कॉफी बीन्स उपलब्ध हैं, की आवश्यकता हो सकती है।
- एक और तरीका StartMachine () जो मशीन को चालू करता है, मशीन में एक नए नए पेपर कप की आवश्यकता होती है।
- एक टेस्टकेस जो the की जाँच करता है गर्म पानी () 'विकल्प।
- एक और टेस्टकेस जो the की जाँच करता है कैपुचिनो () 'विकल्प।
- एक और टेस्टकेस जो the की जाँच करता है एक्सप्रेस-कॉफ़ी () 'विकल्प।
- एक और तरीका ' फेंक देना () ”जो बिन में इस्तेमाल किए गए कपों को फेंकता है।
- एक कक्षा-स्तरीय विधि “ फेंक () ”बेसिन में ट्रे से अपशिष्ट तरल को बहकर फेंकता है और मशीन को बंद कर देता है।
तो, उपरोक्त उदाहरण में, यहां बताया गया है कि परीक्षण का जीवनचक्र इस प्रकार है:
- StartMachine () प्रत्येक टेस्टकेस से पहले चलेगा - गर्म पानी (), कैपुचिनो () तथा एक्सप्रेस-कॉफ़ी () रन।
- इस टेस्टकेस में से प्रत्येक भी विधि का पालन करता है फेंक देना ()।
- विधियों मशीन () तथा फेंक () कक्षा स्तर की विधि है जो एक कक्षा के लिए केवल एक बार चलती है। विधि मशीन () एक बार चलता है जब वर्ग निष्पादन शुरू करता है। विधि फेंक () सभी परीक्षण मामलों के पूर्ण निष्पादन के बाद एक बार चलता है।
अब, सवाल उठता है कि ये केवल जावा तरीके हैं, फिर:
लेफ्ट ज्वाइन vs लेफ्ट आउटर जॉइन
- हम कैसे जेवीएम चलाने पर जोर देंगे मशीन () केवल एक बार कक्षा स्तर पर और फेंक () वर्ग निष्पादन के अंत में?
- हम जेवीएम को कैसे जानेंगे StartMachine () तथा फेंक देना () प्रत्येक टेस्टकेस को चलाने से पहले और प्रत्येक टेस्टकेस के निष्पादन के पूरा होने के बाद क्रमशः चलाने की आवश्यकता है?
- हम जेवीएम को उन तरीकों की पहचान कैसे करा सकते हैं गर्म पानी (), कैपुचिनो () तथा एक्सप्रेस-कॉफ़ी () परीक्षण मामलों को चलाया जाना है?
उत्तर: उपरोक्त प्रश्नों का एकमात्र उत्तर यह है कि जीवनचक्र कॉलबैक एनोटेशन सभी आवश्यक जादू करते हैं।
(अभी के लिए, मान लें कि हम JUnit 4 में इस वर्ग का निर्माण कर रहे हैं)
जीवनचक्र एनोटेशन - @BeforeClass, @AfterClass, @Before, @After, तथा @परीक्षा उपरोक्त तीन प्रश्नों के वास्तविक उत्तर हैं। हमें पूरा यकीन है, कि नीचे दिए गए बिंदुओं को पढ़ने के बाद, आपको जीवनचक्र कॉल बैक एनोटेशन और इसके वर्कफ़्लो के साथ स्पष्ट हो जाएगा।
- विधि का उल्लेख करें मशीन () साथ से @कक्षा से पहले और JVM इसे क्लास की शुरुआत के दौरान एक बार चलाएगा।
- विधि का उल्लेख करें कचरा फेंको () साथ से @क्लास के बाद और JVM इसे कक्षा के अंत में एक बार चलाएगा।
- विधि का उल्लेख करें StartMachine () साथ से @इससे पहले और JVM प्रत्येक टेस्टकेस के चलने से पहले इसे चलाएगा।
- विधि का उल्लेख करें फेंक देना () साथ से @उपरांत और JVM इसे प्रत्येक परीक्षण मामले के निष्पादन के बाद चलाएगा।
- इन विधियों में से प्रत्येक को एनोटेट करें गर्म पानी (), कैपुचिनो () तथा एक्सप्रेस-कॉफ़ी () साथ से @परीक्षा और JVM को पता है कि ये JUnit क्लास को निष्पादित करने के लिए मुख्य परीक्षण मामले हैं।
हमें जल्दी से एक नजर डालते हैं JUnit 5 बनाम JUnit 5 के लिए JUnit जीवनचक्र कॉल एनोटेशन
जून 4 एनोटेशन | जून 5 एनोटेशन | |
---|---|---|
@RepeatedTest | 1.JUnit 5 @RepeatedTest एनोटेशन का उपयोग करके निश्चित समय के लिए परीक्षण विधि के बार-बार निष्पादन का समर्थन करता है | |
@इससे पहले | @BeforeEach | |
@उपरांत | @प्रत्येक के बाद | |
@कक्षा से पहले | @सबसे पहले | |
@क्लास के बाद | @आख़िरकार | |
@परीक्षा | @परीक्षा |
जीवनचक्र एनोटेशन के अनुक्रमिक वर्कफ़्लो
नीचे दिए गए JUnit 4 के लिए जीवनचक्र एनोटेशन के अनुक्रमिक वर्कफ़्लो है:
- @BeforeClass के साथ एनोटेट की गई विधि को कक्षा के प्रारंभ में एक बार निष्पादित किया जाता है।
- टेस्टकेस 1 शुरू होने से पहले @Before के साथ एनोटेट किया गया तरीका।
- टेस्टटेक्स 1 की विधि @ टेस्ट के साथ एनोटेट है जो क्लास में टेस्टकेस है।
- टेस्टकेस 1 के पूरा होने के बाद @After रन के साथ एनोटेट किया गया तरीका।
- टेस्टकेस 2 शुरू होने से पहले @Before के साथ एनोटेट किया गया तरीका।
- टेस्टेस्ट 2 का तरीका @ टेस्ट के साथ एनोटेट है जो क्लास में टेस्टकेस है।
- टेस्टकेस 2 के पूरा होने के बाद @After रन के साथ एनोटेट विधि।
- @AfterClass के साथ एनोटेट की गई विधि को कक्षा के अंत में एक बार अंजाम दिया जाता है जब दोनों टेस्टकेस 1 और 2 को निष्पादित किया जाता है।
JUnit 5 के लिए जीवनचक्र एनोटेशन के अनुक्रमिक वर्कआउट निम्नानुसार हैं:
- @BeforeAll के साथ एनोटेट की गई विधि को कक्षा की शुरुआत में एक बार निष्पादित किया जाता है।
- टेस्टकेस 1 शुरू होने से पहले @BeforeEach के साथ एनोटेट किया गया तरीका।
- टेस्टटेक्स 1 की विधि @ टेस्ट के साथ एनोटेट है जो क्लास में टेस्टकेस है।
- टेस्टकेस 1 के पूरा होने के बाद @AfterEach के साथ एनोटेट किया गया तरीका।
- टेस्टकेस 2 शुरू होने से पहले @BeforeEach के साथ एनोटेट किया गया तरीका।
- टेस्टेस्ट 2 का तरीका @ टेस्ट के साथ एनोटेट है जो क्लास में टेस्टकेस है।
- टेस्टकेस 2 के पूरा होने के बाद विधि @AfterEach के साथ एनोटेट चलती है।
- @AfterAll के साथ एनोटेट की गई विधि को क्लास के अंत में एक बार निष्पादित किया जाता है, जब दोनों टेस्टकेस 1 और 2 को निष्पादित किया जाता है।
प्रत्येक एनोटेशन पर विस्तार
इस खंड में, गहरी डुबकी लगाते हैं और इस बात की विस्तृत जानकारी रखते हैं कि प्रत्येक जीवनचक्र वापस एनोटेशन को क्या कहता है:
@Before (JUnit 4) / @ इससे पहले (JUnit 5):
- एनोटेट विधि परीक्षण वर्ग में प्रत्येक परीक्षण विधि के निष्पादन से पहले निष्पादित होती है।
- इस एनोटेशन का उपयोग तब किया जा सकता है जब आप प्रत्येक परीक्षण की शुरुआत से ठीक पहले संसाधन या परीक्षण डेटा सेट करना चाहते हैं।
- उदाहरण के लिए, यदि किसी JUnit टेस्ट क्लास में 5 टेस्टकेस हैं, तो टेस्ट केस के प्रत्येक निष्पादन से पहले 5 बार पहले @ @ के साथ एनोटेट किया गया तरीका लागू होता है।
@ आफ्टर (JUnit 4) / @ AfterEach (JUnit 5):
- परीक्षण वर्ग में प्रत्येक परीक्षण विधि के बाद एनोटेट विधि निष्पादित होती है।
- इस एनोटेशन का उपयोग तब किया जा सकता है जब आप प्रत्येक टेस्ट केस के चलने के बाद उपयोग किए गए संसाधनों या परीक्षण डेटा को जारी करना चाहते हैं।
- उदाहरण के लिए, यदि किसी ज्यूनिट परीक्षा वर्ग में 5 टेस्टकेस हैं, तो विधि के बाद @ @ के साथ एनोटेट किया गया है। टेस्ट मामलों के निष्पादन के बाद 5 बार निष्पादित होता है।
@BeforeClass (JUnit 4) / @ इससे पहले (JUnit 5):
- किसी परीक्षण वर्ग में सभी परीक्षण विधियों को निष्पादित करने से पहले एनोटेट विधि निष्पादित होती है।
- इस एनोटेशन का उपयोग तब किया जा सकता है जब आप क्लास स्तर पर संसाधन या परीक्षण डेटा सेट करना चाहते हैं।
- जैसा कि इस पद्धति को @ पहले क्लिक / @ के साथ एनोटेट किया जाता है, इससे पहले कि केवल एक बार परीक्षण वर्ग के लिए निष्पादित किया जाता है और विधि की प्रतिलिपि कक्षा भर में साझा की जाती है, और विधि को बताया जाना चाहिए स्थिर।
- उदाहरण के लिए, यदि किसी JUnit टेस्ट क्लास में 5 Testcases हैं, तो किसी भी टेस्टकेस के शुरू होने से पहले टेस्ट क्लास के अनुसार एक बार @ पहले क्लिक / @ के साथ एनोटेट किया गया तरीका लागू होता है।
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- एक परीक्षण वर्ग में सभी परीक्षण विधियों के बाद एनोटेट विधि निष्पादित होती है।
- इस एनोटेशन का उपयोग तब किया जा सकता है जब आप कक्षा स्तर पर उपयोग किए गए संसाधनों या परीक्षण डेटा को जारी करना चाहते हैं।
- जैसा कि इस पद्धति को @ AfterClass / @ AfterAll के साथ एनोटेट किया जाता है, केवल एक बार परीक्षण कक्षा के लिए निष्पादित किया जाता है और विधि की प्रतिलिपि कक्षा में साझा की जाती है, विधि को बताया जाना चाहिए स्थिर।
- उदाहरण के लिए, यदि किसी JUnit परीक्षण वर्ग में 5 Testcases हैं तो विधि @ AfterClass / @ AfterAll के साथ एनोटेट हो जाती है जब सभी परीक्षण मामलों के पूर्ण निष्पादन के बाद परीक्षण वर्ग के अनुसार एक बार निष्पादित किया जाता है।
@Test (JUnit 4 और JUnit 5):
- JUnit 4 के साथ-साथ JUnit 5 के लिए @Test एनोटेशन आम है। एनोटेट किए गए तरीके कक्षा में परीक्षण मामलों का प्रतिनिधित्व करते हैं।
- वहाँ एक JUnit वर्ग में @Test के साथ एनोटेट कई तरीके हो सकते हैं। इसका तात्पर्य यह है कि एक कक्षा में कई परीक्षण मामले हो सकते हैं।
- परीक्षण करने के लिए अलग-अलग विशेषताएँ या पैरामीटर हैं, जिन्हें पारित किया जा सकता है। आप एक परीक्षण मामले के लिए एक मजबूर समय जोड़ सकते हैं या एक अपवाद जोड़ सकते हैं। यह एक अलग ट्यूटोरियल में विस्तार से कवर किया जाएगा।
- एनोटेट विधि निजी या स्थिर नहीं हो सकती है और किसी भी मूल्य को वापस नहीं कर सकती है।
- JUnit 4 में @Test पद्धति को सार्वजनिक घोषित किया गया है, जबकि Junit 5 एक्सेस मॉडिफायर mod public ’के बिना परिभाषित एक टेस्टकेस की अनुमति देता है क्योंकि यह डिफ़ॉल्ट रूप से’ no access modifier ’को’ public ’मानता है।
बेसिक जूनियर टेस्ट उदाहरण
बुनियादी जून 4 उदघोषणाओं के लिए उदाहरण @BeforeClass, @Before, @Test, @After, और @AfterClass को कोड के माध्यम से in टेस्ट फिक्स्चर में हमारे पहले के ट्यूटोरियल ’में इसकी व्याख्या के साथ दिखाया गया था।
आइए बुनियादी पर नजर डालते हैं JUnit 5 जीवनचक्र कॉल-बैक एनोटेशन @BeforeAll, @BeforeEach, @Test, @AfterEach और @AfterAll के कामकाज को प्रदर्शित करने का कार्यक्रम।
JUnit5Program.java के लिए कोड:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
वर्ग फ़ाइल के निष्पादन पर, नीचे का परिणाम कंसोल विंडो पर दिखाई देता है।
अतिरिक्त एनोटेशन - JUnit 4 बनाम JUnit 5
कई अतिरिक्त एनोटेशन हैं जो विशिष्ट उद्देश्यों के लिए उपयोग किए जाते हैं। हम JUnit 4 बनाम JUnit 5 के लिए एनोटेशन की सूची देखेंगे और इसका उद्देश्य संक्षिप्त में कार्य करेगा।
हमारे आगामी ट्यूटोरियल में इनमें से प्रत्येक एनोटेशन पर एक विस्तृत ट्यूटोरियल होगा।
जून 4 एनोटेशन | जून 5 एनोटेशन | संक्षिप्त में वर्णन |
---|---|---|
@FixMethodOrder | @TestMethodOrder और @ ऑडर | 1. ये एनोटेशन उपयोगकर्ता को परीक्षण वर्ग के भीतर तरीकों के निष्पादन के क्रम को चुनने की अनुमति देते हैं |
@Rule & @ClassRule | @ExtendWith | 1. @ नियम - एनोटेशन को क्लास टेस्टरुले से बढ़ाया जाता है जो टेस्ट मामलों पर कुछ नियमों को लागू करने में मदद करता है। 2. उदाहरण के लिए: परीक्षण मामले के निष्पादन से पहले एक अस्थायी फ़ोल्डर बनाना और फ़ोल्डर पोस्ट-निष्कासन को हटाना नियम के माध्यम से सेट किया जा सकता है। 3. @ नियम केवल JUnit 4 में उपलब्ध है जिसका उपयोग JUnit 5 विंटेज में किया जा सकता है, हालाँकि, @ExtendWith JUnit 5 के लिए एक निकट सुविधा प्रदान करता है 4. इसी तरह, @Rule का उपयोग करके एक ग्लोबल टाइमआउट सेट किया जा सकता है। |
ना | @TestFactory | 1. यह एनोटेशन केवल JUnit 5 द्वारा समर्थित है और गतिशील या रनटाइम परीक्षणों के निर्माण में मदद करता है। 2. यह संग्रह के रूप में डेटा की एक धारा लौटाता है और जीवनचक्र कॉलबैक एनोटेशन का उपयोग नहीं कर सकता है |
ना | @ नेस्ट किया | 1. इस एनोटेशन का समर्थन केवल ज्यूपिट ज्यूपिटर द्वारा किया जाता है 2. यह हमें नेस्टेड टेस्ट केस बनाने में मदद करता है। 3. उदाहरण के लिए, टेस्टकेस 1 के साथ कक्षा 1 में टेस्टकेस 2 के साथ @Nested क्लास 2 हो सकता है। यह टेस्टकेस 2 को टेस्टेडकेस के लिए नेस्टेड टेस्टकेस बनाता है। इसलिए, टेस्टकेस 1 निष्पादित करता है, तो टेस्टकेस 2 निष्पादित होता है। 4. यदि @ नेस्टेड एनोटेशन का उपयोग नहीं किया जाता है तो नेस्टेड क्लास निष्पादित नहीं करेगा। |
@वर्ग | @ टग | 1. यह एनोटेशन परीक्षणों को टैग करने और फ़िल्टर करने में मदद करता है 2. आप उन श्रेणियों के आधार पर फ़िल्टरिंग को शामिल कर सकते हैं जिन्हें वे निष्पादित करते हैं या बाहर कर देते हैं। |
@RunWith (Parameterized.class) @ पैरामीटर। पैरामीटर | @ParameterizedTest और @ValueSource | 1. इस एनोटेशन का उपयोग कई बार टेस्ट डेटा विविधताओं के साथ एक विधि को चलाने के लिए किया जाता है। 2.जुनिट 4 @ रूनिथ और @ पार्मेटर्स को सपोर्ट करता है जबकि जनीत 5 ज्यूपिटर @ वेल्यू सोर्स के साथ @ParameterizedTest को सपोर्ट करता है। |
@प्रदर्शित होने वाला नाम | 1. एक उपयोगकर्ता-परिभाषित नाम प्रदर्शन उद्देश्यों के लिए एक परीक्षण विधि या वर्ग को दिया जा सकता है। | |
@TestInstance (LifeCycle.PER_CLASS) और @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 परीक्षणों के जीवनचक्र के विन्यास का समर्थन करता है। 2. JUnit 4 और 5 दोनों डिफ़ॉल्ट प्रति विधि जीवनचक्र कॉल-बैक का अनुसरण करते हैं जबकि प्रति-वर्ग कॉन्फ़िगरेशन भी किया जा सकता है। |
निष्कर्ष
- हमने जीवनचक्र कॉल-बैक एनोटेशन और अनुक्रमिक वर्कफ़्लो के बारे में सीखा जिसमें परीक्षण विधियाँ उनके एनोटेशन के आधार पर निष्पादित होती हैं।
- हमने JUnit 4 के लिए उपयोग किए गए एनोटेशन और JUnit 5 के एनोटेशन सीखे।
- हमें अतिरिक्त एनोटेशन के बारे में भी पता चला है कि JUnit 4 समर्थन करता है और जो केवल JUnit 5 का समर्थन करते हैं।
=> यहाँ सरल JUnit प्रशिक्षण श्रृंखला देखें।
अनुशंसित पाठ
- एक JUnit टेस्ट स्थिरता क्या है: JUnit 4 उदाहरणों के साथ ट्यूटोरियल
- JUnit टेस्ट: उदाहरण के साथ JUnit टेस्ट मामलों को कैसे लिखें
- शुरुआती के लिए JUnit ट्यूटोरियल - JUnit परीक्षण क्या है
- डाउनलोड, स्थापित करें और ग्रहण में कॉन्फ़िगर करें
- JUnit टेस्ट को निष्पादित करने के कई तरीके
- सेलेनियम स्क्रिप्ट में JUnit फ्रेमवर्क और इसके उपयोग का परिचय - सेलेनियम ट्यूटोरियल # 11
- जावा में गुप्त और अन्य संग्रह करने के लिए गुप्त सूची
- Java List Methods - Sort List, Contains, List Add, List Remove