junit vs testng what are differences
JUnit Vs TestNG चौखटे के बीच एक व्यापक तुलना। उदाहरण के साथ एनोटेशन और फीचरवाइज़ की तुलना शामिल है:
पिछले ट्यूटोरियल में, हमने JRE संस्करण, पर्यावरण चर आदि जैसे विभिन्न मानदंडों के आधार पर DisplayName एनोटेशन और सशर्त परीक्षण निष्पादन सीखा, हमने विषय के आसपास कुछ महत्वपूर्ण प्रश्नों को भी संबोधित किया।
चूँकि हम पिछले ट्यूटोरियल्स में JUnit के बारे में लगातार सीख रहे हैं, इसलिए यह हमारे दर्शकों के लिए एक राहत का काम करेगा क्योंकि हम JUnit से अपने फोकस को JUnit बनाम TestNG की तुलना के एकमात्र एजेंडे के रूप में शिफ्ट करेंगे।
=> यहाँ बिल्कुल सही JUnit प्रशिक्षण गाइड की जाँच करें।
आप क्या सीखेंगे:
JUnit Vs TestNG: एक तुलना
विशेषताएं | JUnit | TestNG |
---|---|---|
टेस्ट के लिए टाइमआउट | हाँ | हाँ |
Opensource ढांचा | हाँ JUnit एक ओपनसोर्स फ्रेमवर्क है | हाँ TestNG एक ओपनसोर्स फ्रेमवर्क है |
यूजर फ्रेंडली | JUnit को विभिन्न मॉड्यूलों में वितरित किया जाता है, उदाहरण: ? पैरामीटर के लिए आपको JUnit Jupiter की आवश्यकता हो सकती है। ? यह JUnit को TestNG की तुलना में उपयोग करने के लिए थोड़ा बोझिल बनाता है | सभी TestNG सुविधाएँ एक मॉड्यूल में आती हैं। यह TestNG को अधिक उपयोगकर्ता के अनुकूल बनाता है। |
प्रमुख आईडीई समर्थन () उदाहरण: ग्रहण, इंटेलीज) | हाँ दोनों ही ज्यादातर IDE को समान रूप से सपोर्ट करते हैं | हाँ दोनों ही ज्यादातर IDE को समान रूप से सपोर्ट करते हैं |
एनोटेशन का कार्यान्वयन | हाँ JUnit विभिन्न विशेषताओं के लिए थोड़े बदलाव के साथ एनोटेशन पर काम करता है | हाँ TestNG एनोटेशन पर विभिन्न विशेषताओं के लिए थोड़े बदलाव के साथ काम करता है |
अभिकथनों का कार्यान्वयन | हाँ JUnit TestNG में कुछ भिन्नताओं के साथ अपेक्षित और वास्तविक परिणामों को मान्य करने के लिए पर्याप्त दावे प्रदान करता है | हाँ TestNG भी अपेक्षित और वास्तविक परिणामों की तुलना के लिए जोर की एक विशाल सूची का समर्थन करता है। इसके अतिरिक्त, TestNG मुखरता के लिए दो तंत्र प्रदान करता है - शीतल अभिकथन और हार्ड अभिकथन |
अपवाद | हाँ JUnit टेस्टनेस के लिए थोड़ी भिन्नता के साथ अपवाद परीक्षण के लिए सुविधा प्रदान करता है | हाँ TestNG अपवाद परीक्षण के लिए सुविधा भी प्रदान करता है |
परिमाणित परीक्षण | हाँ JUnit मानकीकृत परीक्षणों का समर्थन करता है | हाँ TestNG भी मानकीकृत परीक्षणों का समर्थन करता है |
परीक्षण सूट | हाँ JUnit परीक्षण सूट के उपयोग का समर्थन करता है | हाँ TestNG टेस्ट सूट का भी समर्थन करता है। |
निर्भरता की परीक्षा | ऐसा न करें JUnit निर्भरता परीक्षण के लिए सुविधा का समर्थन नहीं करता है | हाँ यह JUnit के ऊपर TestNG में एक उन्नत विशेषता है। इस सुविधा के साथ, एक विधि को अन्य पर निर्भर के रूप में बनाया जा सकता है कि यह विधि केवल निर्भर पद्धति के चलने के बाद ही चलेगी और अन्य निर्भर परीक्षण को नहीं चलाएगी। |
समानांतर परीक्षण निष्पादन | ऐसा न करें JUnit में समानांतर निष्पादन उपलब्ध नहीं है | हाँ TestNG परीक्षण के समानांतर निष्पादन का समर्थन करता है लेकिन JUnit doesnot। एक TestNG xml है जहां समानांतर निष्पादन सेट किया जा सकता है |
मवन एकता | हाँ दोनों उपकरण मावेन एकता का समर्थन करते हैं | हाँ दोनों उपकरण मावेन एकता का समर्थन करते हैं |
मान्यताओं का कार्यान्वयन | हाँ मान्यताओं का उपयोग कुछ मान्यताओं या स्थितियों के आधार पर परीक्षण को छोड़ने के लिए किया जाता है और यह केवल JUnit में लागू है। | ऐसा न करें TestNG मान्यताओं का समर्थन नहीं करता है |
परीक्षण निष्पादन का आदेश | हाँ जूनिट परीक्षण निष्पादन के आदेश का समर्थन करता है। | हाँ TestNG परीक्षण निष्पादन के आदेश का समर्थन करता है |
श्रोताओं का कार्यान्वयन | हाँ JUnit श्रोताओं का समर्थन एनोटेशन के माध्यम से नहीं बल्कि श्रोता एपीआई के माध्यम से करता है। | हाँ TestNG एनोटेशन के माध्यम से श्रोताओं का समर्थन करता है। |
टेस्ट को नजरअंदाज करें | हाँ दोनों परीक्षण को अक्षम करने का समर्थन करते हैं लेकिन JUnit अलग-अलग स्थिति के आधार पर निष्पादन के लिए अक्षम परीक्षणों का समर्थन करता है | हाँ दोनों परीक्षणों को अक्षम करने का समर्थन करते हैं |
रिपोर्टिंग | हाँ HTML रिपोर्ट उत्पन्न करने के लिए JUnit को maven के साथ एकीकृत किया जाना है | हाँ TestNG का निर्माण HTML रिपोर्ट में किया गया है। यह मावेन के साथ-साथ एटीयू रिपोर्ट या एक्सटेंट रिपोर्ट जैसे बाहरी रिपोर्टिंग पुस्तकालयों के साथ एकीकृत किया जा सकता है |
एनोटेशन की तुलना
TestNG और JUnit दोनों जावा की दुनिया से इकाई परीक्षण रूपरेखा हैं। दोनों बहुत करीब और समान सुविधाओं को लागू करते हैं। इस खंड में, हम कुछ विशेषताओं को लागू करने में कुछ समानताएँ देखेंगे, जबकि हमें कुछ अन्य सुविधाएँ भी देखने को मिलेंगी, जो कि JUnit और TestNG में अलग-अलग कार्यान्वित की जाती हैं।
(1) टेस्ट विधि एनोटेशन
JUnit और TestNG दोनों में परीक्षण विधि के रूप में एक विधि को निर्दिष्ट करने के तरीके में कोई अंतर नहीं है।
JUnit 5 | TestNG |
---|---|
@परीक्षा | @परीक्षा |
# 2) सुइट संबंधित एनोटेशन
- वर्तमान परीक्षण सूट चलने से पहले एनोटेशन @BeforeSuite के साथ एक विधि निष्पादित की जाती है।
- यह एनोटेशन केवल TestNG में लागू होता है।
JUnit 5 | TestNG |
---|---|
लागू नहीं | @BeforeSuite |
# 3) कक्षा से पहले एक विधि के लिए एनोटेशन
यह कक्षा में पहली परीक्षा विधि चलाने से पहले एक बार निष्पादित की जाने वाली विधि के लिए एनोटेशन है।
JUnit 5 | TestNG |
---|---|
@सबसे पहले | @कक्षा से पहले |
# 4) टेस्ट से पहले एक विधि के लिए एनोटेशन
- यह एनोटेशन testng.xml के टैग के अंदर घोषित तरीकों से पहले एक बार निष्पादित होता है।
- यह एनोटेशन केवल TestNG के लिए उपलब्ध है।
JUnit 5 | TestNG |
---|---|
लागू नहीं | @ सबसे पहले |
# 5) हर विधि से पहले निष्पादित किए जाने वाले तरीके के लिए नोट @ चालान के साथ
JUnit 5 | TestNG |
---|---|
@BeforeEach | @BeforeMethod |
# 6) प्रत्येक विधि के बाद निष्पादित की जाने वाली विधि के लिए नोट @ चालान के साथ
JUnit 5 | TestNG |
---|---|
@प्रत्येक के बाद | @AfterMethod |
# 7) टेस्ट के बाद विधि के लिए एनोटेशन
- यह एनोटेशन testng.xml के टैग के अंदर घोषित तरीकों के बाद एक बार निष्पादित होता है।
- यह एनोटेशन केवल TestNG के लिए उपलब्ध है।
JUnit 5 | TestNG |
---|---|
लागू नहीं | @ बाद में |
# 8) क्लास के बाद विधि के लिए एनोटेशन
यह कक्षा में अंतिम परीक्षण विधि के बाद एक बार निष्पादित की जाने वाली विधि के लिए एनोटेशन है।
JUnit 5 | TestNG |
---|---|
@आख़िरकार | @क्लास के बाद |
# 9) टेस्ट पद्धति के निष्पादन को अक्षम करने की घोषणा।
- JUnit 5 एक विशिष्ट परीक्षण निष्पादन को अक्षम करने के लिए एक एनोटेशन प्रदान करता है।
- TestNG बूलियन मान के साथ @Test यानि 'सक्षम' के लिए एक विशेषता प्रदान करता है जो यह तय करता है कि विधि का निष्पादन अक्षम होगा या सक्षम
JUnit 5 | TestNG |
---|---|
@नज़रअंदाज़ करना | @ टेस्ट (सक्षम = गलत) |
को देखें ट्यूटोरियल 7 लंघन निष्पादन समझ कैसे JUnit4 बनाम JUnit 5 में परीक्षण को निष्क्रिय करने के लिए
# 10) टाइमआउट एनोटेशन
एनोटेशन JUnit 5 और TestNG के लिए समान है
JUnit 5 | TestNG |
---|---|
@ टेस्ट (टाइमआउट = 2000) | @ टेस्ट (टाइमआउट = 2000) |
# 11) अपवाद अपवाद विशेषता
- अपवाद वर्ग बताता है कि जब परीक्षण निष्पादित होता है, तो दिए गए वर्ग का अपवाद फेंक दिया जाता है।
- यह JUnit और TestNG दोनों में समर्थित है जिस तरह से दोनों घोषित किए जाते हैं।
JUnit 5 | TestNG | |
---|---|---|
@ टेस्ट (अपेक्षित = NullPointerException.class) | @ टेस्ट (अपेक्षया अपवाद = NullPointerException.class) |
# 12) सुइट संबंधित एनोटेशन
- वर्तमान परीक्षण सूट के चलने के बाद एक बार एनोटेशन @AfterSuite के साथ एक विधि निष्पादित की जाती है।
- यह एनोटेशन केवल TestNG में लागू होता है।
JUnit 5 | TestNG |
---|---|
लागू नहीं | @ आफ्टरसाइट |
# 13) समूह संबंधी एनोटेशन
- एनोटेशन केवल TestNG में उपलब्ध है।
- एनोटेशन @BeforeGroups के साथ विधि एक विशेष समूह से संबंधित परीक्षण विधियों से पहले चलती है।
JUnit 5 | TestNG | |
---|---|---|
लागू नहीं | @BeforeGroups |
- एनोटेशन केवल TestNG में उपलब्ध है।
- एनोटेशन @BeforeGroups के साथ विधि एक विशेष समूह से संबंधित परीक्षण विधियों के बाद चलती है।
JUnit 5 | TestNG |
---|---|
लागू नहीं | @ बाद के समूह |
# 14) निष्पादन संबंधी आदेशों का आदेश
JUnit और TestNG दोनों निष्पादन के लिए परीक्षणों के क्रम को स्पष्ट रूप से निर्धारित करने का समर्थन करते हैं। दूसरे शब्दों में, परीक्षण मामलों के लिए प्राथमिकता निर्धारित करना।
- JUnit 5 में एनोटेशन @TestMethodOrder () MethodOrderer पैकेज की बिल्ट-इन क्लास के साथ है - एनोटेशन के लिए इनपुट पैरामीटर के रूप में Alphanumeric.class या OrderAnnotation.class या Random.class।
को देखें ट्यूटोरियल 9 - जुनिट टेस्ट एक्ज़ीक्यूशन ऑर्डर JUnit में परीक्षण निष्पादन आदेश सेट करने के बारे में अधिक जानकारी के लिए।
- TestNG में @Test एनोटेशन के लिए विशेषता 'प्राथमिकता' शामिल है, जो संख्यात्मक मान को स्वीकार करता है।
JUnit 5 | TestNG |
---|---|
@TestMethodOrder (अल्फ़ान्यूमेरिक.क्लास) | @ टेस्ट (प्राथमिकता = 1) |
TestNG और JUnit 4 के लिए मूल कार्यक्रम
(1) TestNG कोड
package newtest.com; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeSuite; import org.testng.annotations.AfterSuite; public class NewTestng { @Test(dataProvider = 'dp') public void f(Integer n, String s) { System.out.println(' * * * * * * *Parameterized method * * * * * * * * * '); System.out.println('Integer '+n+' String '+s); System.out.println(' * * * * * * * * * * * * * * * * '); } @BeforeMethod public void beforeMethod() { System.out.println('Before Method'); } @AfterMethod public void afterMethod() { System.out.println('After Method'); } @DataProvider public Object()() dp() { return new Object()() { new Object() { 1, 'a' }, new Object() { 2, 'b'}, }; } @BeforeClass public void beforeClass() { System.out.println('Before Class'); } @AfterClass public void afterClass() { System.out.println('After Class'); } @BeforeTest public void beforeTest() { System.out.println('Before Test'); } @AfterTest public void afterTest() { System.out.println('After Test'); } @BeforeSuite public void beforeSuite() { System.out.println('Before Suite'); } @AfterSuite public void afterSuite() { System.out.println('After Suite'); } }
अपेक्षित उत्पादन:
# 2) JUnit 4 कोड
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.BeforeClass; import org.junit.AfterClass; public class JunitTest { @Parameterized.Parameters public static Object()() data() { return new Object(3)(0); } @BeforeClass public static void beforeClass() { System.out.println('Before Class'; } @Before public void beforeMethod() { System.out.println('Before Method'); } @Test public void f() { System.out.println(' * * * * * * *test * * * * * * * * * '); int n=10; System.out.println('Integer '+n); System.out.println(' * * * * * * * * * * * * * * * * '); } @After public void afterMethod() { System.out.println('After Method'); } @AfterClass public static void afterClass() { System.out.println('After Class'); } }
अपेक्षित उत्पादन:
JUnit 5 बनाम TestNG: उदाहरणों के साथ फ़ीचर अंतर
(1) टेस्ट सूट
- परीक्षण सूट परीक्षणों का एक संग्रह है, जिसका अर्थ है कि हम एक साथ कई कक्षाओं से कई परीक्षण मामलों को लपेटने के प्रकार हैं।
- टेस्टयूजी का उपयोग करने वाला दृष्टिकोण जुइनिट की तुलना में अलग और शक्तिशाली है।
जुनाइट 5 में टेस्ट सूट
आइए हम जल्दी से देखते हैं कि कैसे JUnit 5 टेस्ट सूट लागू करता है।
को देखें ट्यूटोरियल 8 -जूनिट टेस्ट सूट और फ़िल्टरिंग JUnit 4 और JUnit 5 में टेस्ट सूट के कार्यान्वयन की बेहतर समझ के लिए टेस्टकेस।
@RunWith(JUnitPlatform.class) @SelectClasses({JUnit5TestCase1.class, JUnit5TestCase2.class }) public class JUnitTestSuite { }
TestNG में टेस्ट सूट
TestNG सभी तार्किक रूप से कनेक्टिंग टेस्ट कक्षाओं को लपेटने के लिए XML को नीचे दिए गए टेम्पलेट के रूप में उपयोग करता है
# 2) परिमाणित परीक्षण
TestNG और JUnit दोनों ही परीक्षणों के मानकीकरण की अनुमति देते हैं जो डेटा भिन्नताओं के साथ समान परीक्षणों को चलाने के अलावा कुछ भी नहीं है।
JUnit 4 में परिमेय परीक्षण
@RunWith(value=Parameterized.class) public class JUnitclass{ int n; public JUnitclass (int num){ this.n=num; } @Parameters public static Iterable data(){ Object()() objectArray =new Object()() {{1},{2},{3}}; returnArrays.asList(objectArray); } @Test public void Junittst(){ System.out.println(“Multiples of 2 are :”+ 2*n); } }
TestNG में परिमाणित परीक्षण
TestNG में पैरामीटर 2 का उपयोग करने के 2 तरीके हैं
- @ पैरामीटर और TestNG XML से गुजरना
- एनोटेशन @DataProvider
a) @ पैरामीटर्स और TestNG XML से गुजरना
public class testins{ @Test @Parameters(value=”env_pd”) public void paramEnv(str env_pd){ If(env_pd=”QA”){ url=”definetest.com” } else if(env_pd=”accpt”){ url=”defineacc.com” }}}
उसी के लिए एक्सएमएल
बी) डाटाप्रॉइडर
DataProvider एनोटेशन हमेशा ऑब्जेक्ट () () जो वस्तुओं की सरणी है लौटाता है।
@DataProvider(name='state') public Object()() getDataFromDataprovider(){ return new Object()() { { 'Maharashtra', 'Pune' }, { 'Karnataka', 'Bangalore' }, { 'Kerala', 'Trivandrum' } }; @Test(dataProvider=”state”) public void paramMethd(str stateName, str cityName){ System.out.println(stateName+” ”+cityName); }
# 3) टाइमआउट
यदि कोई विशेष परीक्षा निर्धारित समय में पूरी नहीं होती है, तो उसे एक समय समाप्त हो जाता है। अन्य में, थ्रेड बाधित हो जाता है।
कैसे ग्रहण में परियोजना बनाने के लिए
जेयूनाइट में टाइमआउट
JUnit में टाइमआउट कार्यान्वयन के लिए अलग-अलग दृष्टिकोण हैं। ये:
- विशिष्ट मिलीसेकंड के साथ सामान्य समय-सीमा का उपयोग करना
- मुखरता के साथ टाइमआउट का उपयोग करना
- ग्लोबल टाइमआउट का उपयोग करना
हमारे पास JUnit 4 और JUnit 5 के लिए टाइमआउट पर एक विस्तृत ट्यूटोरियल होगा।
नीचे स्निपेट को JUnit 5 में सामान्य टाइमआउट का उपयोग दिखाया गया है:
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
5 सेकंड के बाद उपरोक्त परीक्षण समय समाप्त।
TestNG में टाइमआउट
TestNG टाइमआउट कार्यान्वयन के सरल तरीके का उपयोग करता है:
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
# 4) अपवाद परीक्षण
अपवाद परीक्षण यह सुनिश्चित करता है कि जब इस पूर्वनिर्धारित अपवाद को फेंक दिया जाता है, तो इसे सुंदर रूप से पकड़ा जाता है और लॉग पर अधिसूचित किया जाता है।
JUnit 4 में अपवाद परीक्षण
@Test (expected = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
विस्तार से JUnit 4 और 5 के लिए अपवादों को कवर करने वाला एक अलग ट्यूटोरियल होगा।
TestNG में अपवाद परीक्षण
TestNG में अपवाद परीक्षण की घोषणा में थोड़ा बदलाव है:
@Test (expectedExceptions = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
# 5) टेस्ट को अक्षम करें
TestNG और JUnit दोनों निष्पादन के लिए एक परीक्षण को अक्षम करने की अनुमति देते हैं।
JUnit 5 में विकलांग परीक्षण
वर्ग के शीर्ष पर उपयोग किए जाने पर @ सक्रिय विश्लेषण, निष्पादन के लिए कक्षा के भीतर सभी परीक्षणों को छोड़ दिया जाता है। किसी विशेष @ विधि के शीर्ष पर उपयोग किए जाने पर टिप्पणी, निष्पादन के लिए विशिष्ट परीक्षण केस अक्षम है।
import org.junit.AfterClass; @Disabled('the testcase is under development') public class JUnitProgram {
टेस्टएनजी में विकलांग टेस्ट
TestNG एक परीक्षण को परीक्षण के लिए निष्पादन को अक्षम करने की अनुमति देता है जब एनोटेशन @Test की 'सक्षम' विशेषता गलत पर सेट होती है और यह तब सक्षम होता है जब विशेषता सत्य पर सेट होती है। यदि किसी वर्ग के सभी परीक्षणों को सक्षम करना है तो प्रत्येक @ विधि के लिए स्पष्ट रूप से सक्षम = सत्य को चिह्नित करें।
नीचे कोड का स्निपेट है जो एक परीक्षण के लंघन को प्रदर्शित करता है।
@Test(enabled=false) public void f_validate(){ // let us skip this function}
# 6) ग्रुप टेस्ट
कई साइटों और मंचों में विरोधाभासी बयान दिए गए हैं, जहां लोगों ने उल्लेख किया है कि जेनेट ने कभी भी विशिष्ट समूह नाम के साथ परीक्षणों के समूह का समर्थन नहीं किया।
टिप्पणियां @BeforeGroups और @AfterGroups केवल TestNG के साथ आते हैं, हालांकि JUnit 4 के साथ-साथ JUnit 5 में समूहन की अनुमति है। यहां हम JUnit में समूह परीक्षणों के उपयोग को जल्दी से प्रदर्शित करेंगे - समूह परीक्षणों को JUnit 4 और Tags में श्रेणियाँ के रूप में संदर्भित किया जाता है। JUnit 5 में।
आप संदर्भित कर सकते हैं ट्यूटोरियल 8 - JUnit टेस्ट सूट और फ़िल्टरिंग टेस्ट JUnit में उपयोग पर विवरण के लिए।
सर्वश्रेष्ठ क्रोम पॉप अप अवरोधक विस्तार
JUnit 5 में ग्रुप टेस्ट
@Tag(“Regression”) @Test public void junitMethod1(){} @Tag(“SmokeTest”) @Test public void junitMethod2(){
JUnit5TestSuite.java से कोड स्निपेट:
नीचे दिए गए कोड में 'प्रतिगमन' नाम वाला समूह शामिल है और समूह 'स्मोकटेस्ट' को शामिल किया गया है जो इस बात की पुष्टि करता है कि junitMethod1 () को junitMethod2 चलाया जाएगा () को बाहर रखा गया है।
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludeTags(“Regression”) @ExcludeTags(“SmokeTest”) public class JUnit5TestSuite { }
TestNG में ग्रुप टेस्ट
यदि उपरोक्त स्निपेट की व्याख्या TestNG में की जानी है, तो नीचे उसी के लिए कोड है:
@Test(groups={“Regression” }) public void junitMethod1(){} @Test(groups={“SmokeTest” }) public void junitMethod2(){}
TestNG XML इस प्रकार है:
यहां, प्रतिगमन समूह विधियों को धावक में शामिल किया गया है जबकि स्मोकटेस्ट सहित बाकी समूहों को बाहर रखा गया है।
# 7) समानांतर टेस्ट
यह वह सुविधा है जो केवल TestNG के साथ उपलब्ध है। आमतौर पर, परीक्षण के मामले एक प्रकार के धागे होते हैं जो एक के बाद एक किए जाते हैं। हालांकि, यदि आप निष्पादन के समय पर बचत करना चाहते हैं, तो आप टेस्टएनजी में इसे समानांतर में चलाने के लिए परीक्षण सेट करके और थ्रेड्स की संख्या प्रदान करके नियंत्रित कर सकते हैं जिन्हें एक बार में चलाने की आवश्यकता होती है।
हम संक्षेप में यहां के तरीकों पर निर्भर करता है और समूहों पर निर्भर करता है पर चर्चा नहीं करेंगे के उपयोग को प्रदर्शित करेगा।
एक अन्य विधि पर निर्भर परीक्षण TestNG XML के माध्यम से निम्नानुसार सेट किया गया है:
# 8) आश्रित टेस्ट
आश्रित परीक्षण केवल टेस्टएनजी के साथ उपलब्ध उन्नत सुविधाएँ हैं। निर्भरता परीक्षण या समूह पर हो सकती है।
@Test mytest1(){ System.out.println(“My test : mytest1”); } @Test (dependensOnMethods={“mytest1”}) public void mytest2(){ System.out.println(“My test : mytest2”); }
उपरोक्त कार्यक्रम में, जैसा कि mytest2 mytest1 पर निर्भर करता है, पहले mytest1 चलता है और फिर mytest2 चलाया जाता है। यदि mytest1 विफल हो जाता है, तो mytest2 को लागू नहीं किया जाएगा। इस तरह से आश्रित परीक्षण मामलों को एक विशिष्ट वर्कफ़्लो को नियंत्रित करने के लिए पूर्वनिर्धारित किया जा सकता है जिसे आप निष्पादित करना चाहते हैं।
# 9) सुनने वाले
परीक्षण के भीतर होने वाली हर घटना को श्रोता सुनते हैं। JUnit और TestNG दोनों में श्रोताओं का समर्थन किया जाता है। इसलिए, यदि आप कुछ कार्य करना चाहते हैं या परीक्षण शुरू होने से पहले लॉग में एक विशिष्ट संदेश दिखाते हैं, तो परीक्षण समाप्त होने के बाद, जब परीक्षा समाप्त हो जाती है, जब परीक्षा उत्तीर्ण या असफल हो जाती है, तो हमारे पास ये श्रोता कार्य हैं जो हमें सक्षम करते हैं इसे करें
JUnit श्रोता वर्ग का उपयोग करता है, और TestNG एक श्रोता इंटरफ़ेस का उपयोग करता है। TestNG एक श्रोता वर्ग को श्रोता इंटरफ़ेस विधियों को परिभाषित करने के लिए लिखता है, और दूसरा चरण मुख्य वर्ग में @ लिस्ट्रेन एनोटेशन का उपयोग करके इस श्रोता वर्ग के नाम को कॉल करना है।
JUnit भी श्रोता मूल वर्ग से उन विधियों को प्राप्त करता है जिसके बाद श्रोता वर्ग को एक या अधिक मुख्य वर्ग पर श्रोता कार्यों को लागू करने के लिए परिभाषित किया जाता है।
TestNG में श्रोता
एक ITestListener इंटरफ़ेस है जिसमें से TestNG लागू किया गया है।
नीचे उन तरीकों को परिभाषित किया गया है जिन्हें ITestListener लागू होने पर परिभाषित करने की आवश्यकता है -
- OnTestStart ()
- OnTestFailure ()
- OnTestSuccess ()
- OnTestSkipped ()
- ऑनस्टार्ट ()
- ऑनफिनिश ()
नीचे onTestStart () और onTestSuccess () कोड का स्निपेट दिखाया गया है
import org.testng.ITestListener; import org.testng.ITestResult; public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { System.out.println('Execution started: '+result.getName()); } @Override public void onTestSuccess(ITestResult result) { System.out.println('Test Passed '+result.getName()); }
इस श्रोता वर्ग को अपने मुख्य वर्ग में कॉल करें जैसे नीचे दिखाया गया है, एनोटेशन @ लिस्टनर का उपयोग करते हुए:
import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(com.javatpoint.Listener.class) public class MymainClass { @Test public void sum() {
JUnit 5 में श्रोता
RunListener वह वर्ग है जिसे श्रोता कार्यों को परिभाषित करने के लिए आपके श्रोता वर्ग द्वारा विस्तारित करने की आवश्यकता होती है।
हमारे पास JUnit के तरीके इस प्रकार हैं:
- testRunStarted
- परीक्षण किया हुआ
- परीक्षण
- tesIgnored
import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; public class Mylistenerclass extends RunListener { public void testRunStarted(Description desc) throws java.lang.Exception { System.out.println('Execution started' + desc.getMethodName()); } public void testRunFinished(Description desc) throws java.lang.Exception { System.out.println('Execution finished' + desc.getMethodName()); }
उपरोक्त श्रोता वर्ग को आमंत्रित करने के लिए एक श्रोता निष्पादन वर्ग बनाने की आवश्यकता है।
आप श्रोता Mylistener वर्ग को परीक्षण विधियों के साथ कई वर्गों में लागू कर सकते हैं।
public class ListenerRunner { public static void main(String() args) { JUnitCore runme = new JUnitCore(); runme.addListener(new ListenerRunner()); runner.run(FirstClass.class, SecondClass.class); }
निष्कर्ष
इस JUnit Vs TestNG ट्यूटोरियल में, हमने TestNG और JUnit फ्रेमवर्क की तुलना की है। हमने दोनों रूपरेखाओं में समर्थित सामान्य विशेषताओं के साथ-साथ केवल TestNG में समर्थित अतिरिक्त सुविधाओं को सीखा। जाहिरा तौर पर, केवल TestNG में कुछ अतिरिक्त विशेषताएं हैं, जैसे समानांतर निष्पादन और निर्भरता परीक्षण। TestNG द्वारा समर्थित अधिकांश सुविधाएँ JUnit में भी उपलब्ध हैं।
सिंटैक्स के संदर्भ में मामूली विचलन हैं, सामान्य विशेषताओं के लिए JUnit बनाम TestNG में शब्दावली। TestNG पर जिन लोगों ने JUnit की ताकत को कम किया था, उन्हें अब तक एहसास हो गया होगा यानी JUnit भी शक्तिशाली ऑटोमेशन फ्रेमवर्क में से एक है।
हम JUnit के कई और दिलचस्प पहलुओं के साथ वापस आएंगे। आगामी ट्यूटोरियल के लिए छड़ी !!!
अनुशंसित पाठ
- शुरुआती के लिए JUnit ट्यूटोरियल - JUnit परीक्षण क्या है
- JUnit एनोटेशन की सूची: JUnit 4 बनाम JUnit 5
- उदाहरण के साथ JUnit 5 एनोटेशन @RepeatedTest का उपयोग कैसे करें
- JUnit इग्नोर टेस्ट केस: JUnit 4 @Ignore Vs JUnit 5 @Disabled
- TestNG स्थापना, बुनियादी कार्यक्रम और रिपोर्ट
- TestNG एनोटेशन और श्रोता
- TestNG ट्यूटोरियल: TestNG फ्रेमवर्क का परिचय
- सेलेनियम में जीत और TestNG चौखटे का उपयोग करना