टेस्टएनजी

TestNG जावा (प्रोग्रामिंग भाषा) के लिए एक परीक्षण सॉफ्टवेयर ढांचा है जो सेड्रिक बेस्ट द्वारा बनाया गया है और JUnit और NUnit से प्रेरित है। TestNG का डिज़ाइन लक्ष्य परीक्षण श्रेणियों की एक विस्तृत श्रृंखला को कवर करना है: इकाई, कार्यात्मक, एंड-टू-एंड, एकीकरण, आदि, अधिक शक्तिशाली और उपयोग में आसान कार्यात्मकताओं के साथ।

विशेषताएँ
TestNG की मुख्य विशेषताओं में शामिल हैं:
 * 1) एनोटेशन समर्थन.
 * 2) डेटा-संचालित परीक्षण के लिए समर्थन|डेटा-संचालित/पैरामीटरयुक्त परीक्षण (साथ)।   और/या XML कॉन्फ़िगरेशन).
 * 3) एक ही परीक्षण वर्ग के कई उदाहरणों के लिए समर्थन (साथ)।  )
 * 4) लचीला निष्पादन मॉडल। टेस्टएनजी को अपाचे चींटी द्वारा बिल्ड.एक्सएमएल (परिभाषित परीक्षण सूट के साथ या उसके बिना) के माध्यम से या दृश्य परिणामों के साथ एक आईडीई प्लगइन द्वारा चलाया जा सकता है। वहाँ कोई नहीं है   क्लास, जबकि परीक्षण सूट, समूह और चलाने के लिए चुने गए परीक्षण XML फ़ाइलों द्वारा परिभाषित और कॉन्फ़िगर किए जाते हैं।
 * 5) समवर्ती परीक्षण: उपलब्ध विभिन्न नीतियों के साथ मनमाने ढंग से बड़े थ्रेड पूल में परीक्षण चलाएं (अपने स्वयं के थ्रेड में सभी विधियां, प्रति परीक्षण वर्ग एक थ्रेड, आदि), और परीक्षण करें कि कोड मल्टीथ्रेड सुरक्षित है या नहीं।
 * 6) अधिक लचीलेपन के लिए बीनशेल को एंबेड करता है।
 * 7) रनटाइम और लॉगिंग के लिए डिफ़ॉल्ट जावा डेवलपमेंट किट फ़ंक्शन (कोई निर्भरता नहीं)।
 * 8) एप्लिकेशन सर्वर परीक्षण के लिए निर्भर तरीके।
 * 9) वितरित परीक्षण: स्लेव मशीनों पर परीक्षणों के वितरण की अनुमति देता है।

डेटा प्रदाता
TestNG में एक डेटा प्रदाता एक परीक्षण वर्ग में एक विधि है, जो निर्भर परीक्षण विधियों के लिए विभिन्न वास्तविक मूल्यों की एक श्रृंखला प्रदान करता है।

उदाहरण:

डेटा प्रदाता का लौटाया गया प्रकार निम्नलिखित दो प्रकारों में से एक हो सकता है:
 * वस्तुओं की सारणी की एक सारणी जहां पहले आयाम का आकार परीक्षण विधि को लागू करने की संख्या है और दूसरे आयाम के आकार में वस्तुओं की एक श्रृंखला होती है जो परीक्षण विधि के पैरामीटर प्रकारों के साथ संगत होनी चाहिए।
 * एक . फर्क सिर्फ इतना है   क्या यह कि Iterator आपको अपना परीक्षण डेटा आराम से बनाने की सुविधा देता है। TestNG एक-एक करके इस पुनरावर्तक द्वारा लौटाए गए मापदंडों के साथ पुनरावर्तक और फिर परीक्षण विधि को लागू करेगा। यह विशेष रूप से उपयोगी है यदि आपके पास विधि को पास करने के लिए बहुत सारे पैरामीटर सेट हैं और आप उन सभी को पहले से नहीं बनाना चाहते हैं।

उपकरण समर्थन
टेस्टएनजी तीन प्रमुख जावा आईडीई - ग्रहण (सॉफ्टवेयर), मैं विचार समझता हूं और  NetBeans  में से प्रत्येक द्वारा, आउट-ऑफ-द-बॉक्स या प्लग-इन के माध्यम से समर्थित है। यह अपाचे चींटी के लिए एक कस्टम कार्य के साथ आता है और अपाचे मावेन बिल्ड सिस्टम द्वारा समर्थित है। हडसन (सॉफ़्टवेयर) निरंतर एकीकरण सर्वर में TestNG के लिए अंतर्निहित समर्थन है और यह समय के साथ परीक्षण परिणामों को ट्रैक और चार्ट करने में सक्षम है। अधिकांश जावा  कोड कवरेज़  उपकरण, जैसे छत, टेस्टएनजी के साथ निर्बाध रूप से काम करते हैं।

नोट: एक्लिप्स के लिए टेस्टएनजी समर्थन केवल 2018-09 (4.9) तक के एक्लिप्स संस्करणों के लिए एक्लिप्स मार्केटप्लेस में एम्बेडेड है। एक्लिप्स के बाद के संस्करणों के लिए, TestNG को TestNG साइट के निर्देशों के अनुसार मैन्युअल रूप से स्थापित किया जाना चाहिए।

रिपोर्टिंग
TestNG HTML और XML स्वरूपों में परीक्षण रिपोर्ट तैयार करता है। XML आउटपुट को चींटी JUnitReport कार्य द्वारा रूपांतरित किया जा सकता है JUnit का उपयोग करते समय प्राप्त रिपोर्टों के समान रिपोर्ट तैयार करना। संस्करण 4.6 के बाद से, TestNG एक रिपोर्टर एपीआई भी प्रदान करता है जो तीसरे पक्ष के रिपोर्ट जेनरेटर की अनुमति देता है, जैसे कि रिपोर्टएनजी, PDFngरिपोर्ट और टेस्टएनजी-एक्सएसएलटी, इस्तेमाल किया जाएगा।

जुनीट के साथ तुलना
TestNG की एक अन्य परीक्षण उपकरण JUnit के साथ लंबे समय से प्रतिद्वंद्विता है। प्रत्येक ढांचे में अंतर और संबंधित फायदे हैं। स्टैक ओवरफ़्लो चर्चाएँ इस विवाद को दर्शाती हैं।

टिप्पणियाँ
JUnit 5 में, अधिकांश परिस्थितियों में @BeforeAll और @AfterAll तरीकों को स्थिर घोषित करना होगा। TestNG में यह बाधा नहीं है।

टेस्टएनजी में टेस्ट सूट और समूहों के लिए चार अतिरिक्त सेटअप/टियरडाउन एनोटेशन जोड़े शामिल हैं: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup और @AfterGroup, @BeforeMethod और @AfterMethod। TestNG सेलेनियम का उपयोग करके किसी एप्लिकेशन के परीक्षण को स्वचालित करने के लिए भी सहायता प्रदान करता है।

पैरामीटरीकृत परीक्षण
पैरामीटरयुक्त परीक्षण दोनों उपकरणों में लागू किया जाता है, लेकिन काफी अलग तरीकों से।

टेस्टएनजी के पास परीक्षण विधि में अलग-अलग पैरामीटर मान प्रदान करने के दो तरीके हैं: testng.xml सेट करके, और @DataProvider विधि को परिभाषित करके। JUnit 5 में, @ParameterizedTest एनोटेशन पैरामीटरयुक्त परीक्षण की अनुमति देता है। इस एनोटेशन को एक अन्य एनोटेशन के साथ जोड़ा गया है जो पैरामीटरयुक्त तर्कों के स्रोत की घोषणा करता है, जैसे @ValueSource या @EnumSource। @ArgumentsSource का उपयोग करने से उपयोगकर्ता को अधिक गतिशीलता लागू करने की अनुमति मिलती है. JUnit 4 में, @RunWith और @Parameters का उपयोग पैरामीटरयुक्त परीक्षणों को सुविधाजनक बनाने के लिए किया जाता है, जहां @Parameters विधि को वापस लौटना होता है  पैरामीटरयुक्त मानों के साथ, जिसे टेस्ट क्लास कंस्ट्रक्टर में फीड किया जाएगा।

निष्कर्ष
विभिन्न उपयोगकर्ता अक्सर एक ढांचे या किसी अन्य की कुछ विशेषताओं को पसंद करते हैं। JUnit अधिक व्यापक रूप से लोकप्रिय है और अक्सर डिफ़ॉल्ट रूप से मुख्यधारा IDE के साथ भेजा जाता है। TestNG विभिन्न प्रकार के परीक्षण के लिए अतिरिक्त कॉन्फ़िगरेशन विकल्पों और क्षमता के लिए जाना जाता है। कौन सा अधिक उपयुक्त है यह उपयोग के संदर्भ और आवश्यकताओं पर निर्भर करता है।

यह भी देखें

 * यूनिट परीक्षण ढाँचे की सूची
 * जुनिट
 * xयूनिट

बाहरी संबंध

 * TestNG Home page