Testng और Junit दोनों यूनिट टेस्टिंग के लिए उपयोग किया जाने वाला टेस्टिंग फ्रेमवर्क है। TestNG JUnit के समान है। इसमें कुछ अधिक कार्यक्षमताओं को जोड़ा गया है जो टेस्टनेट को JUnit से अधिक शक्तिशाली बनाता है।
यह ट्यूटोरियल मुख्य रूप से JUnit और TestNG की विशेषताओं का विश्लेषण करने के लिए केंद्रित है। यह डेवलपर्स को यह तय करने में मदद करता है कि यूनिट टेस्टिंग के लिए किस ढांचे का उपयोग किया जाना चाहिए। आइए पहले TestNG और JUnit4 के बीच समानता का विश्लेषण करें।
TestNG एक परीक्षण ढांचा है जो JUnit और NUnit से प्रेरित है।
यहां तालिका है जो JUnit और TestNG द्वारा समर्थित सुविधाओं को दिखाती है।
JUnit4 और TestNG फ़ीचर की तुलना
TestNG और JUnit4 दोनों एक या दो विशेषताओं को छोड़कर समान दिखते हैं। चलो जल्दी से निर्णय लेने के लिए दोनों के बीच तुलना करें कि कौन सी तकनीक इकाई परीक्षण के लिए अधिक अनुकूल है। नीचे दी गई तालिका में दोनों द्वारा समर्थित सुविधाओं पर प्रकाश डाला गया है:
एनोटेशन
JUnit और TestNG दोनों एनोटेशन का उपयोग करता है और लगभग सभी एनोटेशन समान दिखते हैं।
TestNG JUnit4 में @Before, @ के बाद @BeforeMethod, @ AfterMethod के समान का उपयोग करता है।
TestNG और Junit4 दोनों टाइमआउट के लिए @Test (टाइमआउट = 1000) का उपयोग करते हैं। अधिक जानकारी के लिए नीचे दी गई तालिका देखें-
एस.एन. | विवरण | TestNG | JUnit 4 |
---|---|---|---|
1 | टेस्ट एनोटेशन | @परीक्षा | @परीक्षा |
२ | पहले परीक्षण विधि को वर्तमान कक्षा में लागू करने से पहले निष्पादित किया जाता है | @कक्षा से पहले | @कक्षा से पहले |
३ | वर्तमान कक्षा में सभी परीक्षण विधियों के बाद परीक्षा | @क्लास के बाद | @क्लास के बाद |
४ | प्रत्येक परीक्षण विधि से पहले निष्पादित करें | @BeforeMethod | @इससे पहले |
५ | प्रत्येक परीक्षण विधि के बाद निष्पादित करें | @ आफ्टरमेथोड | @उपरांत |
६ | एक परीक्षण की अनदेखी करने के लिए एनोटेशन | @ टेस्ट (सक्षम = गलत) | @नज़रअंदाज़ करना |
। | अपवाद के लिए एनोटेशन | @ परीक्षण (अपेक्षित अपवाद = अंकगणित अपवाद। वर्ग) | @ टेस्ट (अपेक्षित = अरिथमेटिक एक्ससेप्शन.क्लास) |
। | समय समाप्त | @ टेस्ट (टाइमआउट = 1000) | @ टेस्ट (टाइमआउट = 1000) |
९ | सुइट में सभी परीक्षणों से पहले निष्पादित करें | @BeforeSuite | एन / ए |
१० | सुइट में सभी परीक्षणों के बाद निष्पादित करें | @ आफ्टरसाइट | एन / ए |
1 1 | एक परीक्षण से पहले निष्पादित करता है | @ सबसे पहले | एन / ए |
१२ | एक परीक्षण के बाद निष्पादित होता है | @ बाद में | एन / ए |
१३ | पहली परीक्षा पद्धति लागू होने से पहले होने वाली परीक्षाएं इनमें से किसी भी समूह से संबंधित होती हैं | @BeforeGroups | एन / ए |
१४ | अंतिम परीक्षण विधि के बाद चलाएं जो यहां के किसी समूह से संबंधित है | @ बाद के समूह | एन / ए |
सुइट टेस्ट
सूट का उपयोग कई परीक्षणों को एक साथ निष्पादित करने के लिए किया जाता है। सूट TestNG और JUnit4 दोनों का उपयोग करके बनाया जा सकता है। हालाँकि, TestNG में सुइट्स अधिक शक्तिशाली हैं क्योंकि यह परीक्षणों के निष्पादन के लिए बहुत ही अलग तरीके का उपयोग करता है। आइए इसे नीचे दिए अनुसार कोड स्निपेट का उपयोग करके समझें:
JUnit4 का उपयोग करना
नीचे वर्ग JUnit4 के साथ काम करते समय सुइट के उपयोग का वर्णन करता है:
पैकेज गुरु 99. अर्जुन;आयात org.junit.runner.RunWith;आयात org.junit.runners.Suite;@RunWith (Suite.class)@ सुइट.सूइटक्लास ({सूटटेस्ट 1. क्लब,सूटटेस्ट 2. क्लब,})सार्वजनिक वर्ग JunitTest {// यह वर्ग खाली रहता है, इसका उपयोग केवल उपरोक्त टिप्पणियों के लिए एक धारक के रूप में किया जाता है}
TestNG का उपयोग करना
TestNG एक स्थान पर सभी परीक्षणों को बंडल करने के लिए xml का उपयोग करता है।
<सूट का नाम = "मेरा परीक्षण सूट"><परीक्षण नाम = "परीक्षण"><कक्षाएं><वर्ग नाम = "com.guru99.SuiteTest1" /><वर्ग नाम = "com.guru99.SuiteTest2" /> कक्षाएं> परीक्षण> सूट>
टेस्ट को नजरअंदाज करें
दोनों का उपयोग करके हम एक परीक्षण छोड़ सकते हैं। नीचे दिए गए अनुसार कोड उदाहरण का उपयोग करके इसे देखें:
JUnit4 का उपयोग करना
नीचे कोड स्निपेट JUnit4 के साथ काम करते समय @ignore एनोटेशन के उपयोग का वर्णन करता है:
@नज़रअंदाज़ करनासार्वजनिक शून्य विधि 1 (){{System.out.println ("@Ignore का उपयोग करके, इस निष्पादन को अनदेखा कर दिया जाता है");}
TestNG का उपयोग करना
नीचे कोड स्निपेट में TestNG के साथ काम करते समय @Test (सक्षम = गलत) एनोटेशन के उपयोग का वर्णन है:
@ टेस्ट (सक्षम = गलत)सार्वजनिक शून्य TestWithException (){{System.out.println ("विधि को अनदेखा किया जाना चाहिए क्योंकि यह अभी तक तैयार नहीं है");}
अपवाद परीक्षण
अपवाद परीक्षण TestNG और JUnit4 दोनों में उपलब्ध है। इसका उपयोग यह जांचने के लिए किया जाता है कि परीक्षण से किस अपवाद को फेंका गया है?
JUnit4 का उपयोग करना
नीचे कोड स्निपेट JUnit4 के साथ काम करते समय अपवाद परीक्षण के उपयोग का वर्णन करता है:
@ टेस्ट (अपेक्षित = अरिथमेटिक एक्ससेप्शन.क्लास)सार्वजनिक शून्य विभाजन{{इंट i = 1/0;}
TestNG का उपयोग करना
नीचे कोड स्निपेट टेस्टएनजी के साथ काम करते समय अपवाद परीक्षण के उपयोग का वर्णन करता है:
@ परीक्षण (अपेक्षित अपवाद = अंकगणित अपवाद। वर्ग)सार्वजनिक शून्य विभाजन{{इंट i = 1/0;}
समय समाप्त
यह सुविधा TestNg और JUnit4.Timeout दोनों में लागू की जाती है, एक परीक्षण को समाप्त करने के लिए उपयोग किया जाता है जो निर्दिष्ट समय (मिलीसेकंड में) से अधिक समय लेता है।
JUnit4 का उपयोग करना
नीचे कोड स्निपेट JUnit4 के साथ काम करते समय टाइमआउट परीक्षण के उपयोग का वर्णन करता है:
@ टेस्ट (टाइमआउट = 1000)सार्वजनिक शून्य विधि 1 (){{जबकि (सच्चा);}
TestNG का उपयोग करना
नीचे दिए गए कोड स्निपेट में TestNG के साथ काम करते समय टाइमआउट परीक्षण के उपयोग का वर्णन है:
@ समय (समय = 1000)सार्वजनिक शून्य विधि 1 (){{जबकि (सच्चा);}
परिमाणित परीक्षण
JUnit Parameterized परीक्षण के रूप में ज्ञात परीक्षण के लिए एक आसान और पठनीय दृष्टिकोण प्रदान करता है। TestNG और JUnit दोनों ही मानकीकृत परीक्षण का समर्थन करते हैं, लेकिन जिस तरह से वे पैरामीटर मान को परिभाषित करते हैं, उसमें भिन्नता है। इसे एक-एक करके देखते हैं।
JUnit4 का उपयोग करना
इकाई परीक्षण के लिए पैरामीटर मान प्रदान करने के लिए "@RunWith" और "@ पैरामीटर" एनोटेशन का उपयोग किया जाता है। एनोटेशन @Parameters को सूची [] को वापस करना है। इस पैरामीटर को एक तर्क के रूप में क्लास कंस्ट्रक्टर में पास किया जाएगा।
@RunWith (मान = परिमाणित। वर्ग)सार्वजनिक वर्ग JunitTest {निजीकरण संख्या;सार्वजनिक JunitTest6 (int संख्या){{this.number = संख्या;}@ पैरामीटर्ससार्वजनिक स्थैतिक संग्रह <ऑब्जेक्ट []> डेटा (){{ऑब्जेक्ट [] [] डेटा = नई वस्तु [] [] {{१}, {२}, {३}, {४}};returnArrays.asList (डेटा);}@परीक्षासार्वजनिक शून्य पैरामीटर{{System.out.println ("पैरामीटर संख्या है: + संख्या);}}
TestNG का उपयोग करना
TestNG में, XML फ़ाइल या "@DataProvider" का उपयोग परीक्षण के लिए एक पैरामीटर प्रदान करने के लिए किया जाता है।
यहां @Parameters एनोटेशन विधि में घोषित, परीक्षण के लिए एक पैरामीटर की आवश्यकता है। पैरामीटर के रूप में उपयोग किया जाने वाला डेटा TestNG की XML कॉन्फ़िगरेशन फ़ाइलों में प्रदान करेगा। ऐसा करने से, हम अलग-अलग डेटा सेट के साथ एकल टेस्ट केस का पुन: उपयोग कर सकते हैं, और हम अलग-अलग परिणाम प्राप्त कर सकते हैं।
सार्वजनिक वर्ग टेस्ट 1 {@परीक्षा@ पैरामीटर (मान = "संख्या")सार्वजनिक शून्य पैरामीटर{{System.out.println ("पैरामीटर संख्या है: + संख्या);}}
उपरोक्त वर्ग के लिए उपयोग की जाने वाली xml फ़ाइल नीचे देखें:
<सूट का नाम = "मेरा परीक्षण सूट"><परीक्षण नाम = "परीक्षण"><पैरामीटर का नाम = "संख्या" मान = "2" /><कक्षाएं><वर्ग नाम = "com.guru99.Test1" /> कक्षाएं> परीक्षण> सूट>
सारांश :
हमने विवरण में JUnit4 और TestNG की तुलना देखी। हमने यह भी देखा कि दोनों ही मानकीकृत परीक्षण और निर्भरता परीक्षण को छोड़कर समान हैं। संक्षेप में, हम कह सकते हैं कि लचीलेपन और आवश्यकता के आधार पर हम उनमें से किसी एक को इकाई परीक्षण के लिए चुन सकते हैं।
- अगला