TestNG Vs JUnit: Mikä on ero?

Sisällysluettelo:

Anonim

Sekä Testng että Junit ovat testaustoimintoja, joita käytetään yksikötestauksessa. TestNG on samanlainen kuin JUnit. Muutama enemmän toimintoja lisätään siihen, mikä tekee TestNG: stä tehokkaamman kuin JUnit.

Tämä opetusohjelma on keskittynyt pääasiassa analysoimaan JUnitin ja TestNG: n ominaisuuksia. Se auttaa kehittäjiä päättämään, mitä kehyksiä tulisi käyttää yksikötestauksessa. Analysoidaan ensin TestNG: n ja JUnit4: n väliset yhtäläisyydet.

TestNG on JUnitin ja NUnitin innoittama testauskehys.

Tässä on taulukko, joka näyttää JUnitin ja TestNG: n tukemat ominaisuudet.

JUnit4- ja TestNG-ominaisuuksien vertailu

Sekä TestNG että JUnit4 näyttävät samanlaisilta, lukuun ottamatta yhtä tai kahta ominaisuutta. Tehdään vertailu näiden kahden välillä, jotta voimme nopeasti päättää, mikä tekniikka on suotuisampi yksikötestaukselle. Alla olevassa taulukossa korostetaan molempien tukemat ominaisuudet:

Merkinnät

Sekä JUnit että TestNG käyttävät merkintöjä ja melkein kaikki merkinnät näyttävät samanlaisilta.

TestNG käyttää @BeforeMethodia, @ AfterMethodia, joka on samanlainen kuin @Before, @ After JUnit4: ssä.

Sekä TestNG että Junit4 käyttävät @Testia (aikakatkaisu = 1000) aikakatkaisuun. Tarkista alla olevasta taulukosta -

SN Kuvaus TestNG JUnit 4
1 Testimerkintä @Testata @Testata
2 Suoritetaan ennen kuin ensimmäiseen testimenetelmään käytetään nykyisessä luokassa @Ennen tuntia @Ennen tuntia
3 Suoritetaan kaikkien nykyisen luokan testimenetelmien jälkeen @Oppitunnin jälkeen @Oppitunnin jälkeen
4 Suoritetaan ennen kutakin testimenetelmää @BeforeMethod @Ennen
5 Suoritetaan jokaisen testimenetelmän jälkeen @AfterMethod @Jälkeen
6 huomautus testin ohittamiseksi @Test (enable = false) @jättää huomiotta
7 huomautus poikkeusta varten @Test (expectedExceptions = ArithmeticException.class) @Test (odotettavissa = ArithmeticException.class)
8 Aikalisä @Test (aikakatkaisu = 1000) @Test (aikakatkaisu = 1000)
9 Suoritetaan ennen kaikkia sviitin testejä @BeforeSuite n / a
10 Suoritetaan kaikkien sviitin testien jälkeen @AfterSuite n / a
11 Suoritetaan ennen testin suorittamista @BeforeTest n / a
12 Suoritetaan testiajon jälkeen @AfterTest n / a
13 Suoritetaan ennen kuin käynnistetään ensimmäinen testimenetelmä, joka kuuluu mihin tahansa näistä ryhmistä @BeforeGroups n / a
14 suoritetaan viimeisen testimenetelmän jälkeen, joka kuuluu mihinkään tässä olevaan ryhmään @AfterGroups n / a

Suite-testi

Paketteja käytetään useiden testien suorittamiseen yhdessä. Paketteja voidaan luoda sekä TestNG: llä että JUnit4: llä. Sviitit ovat kuitenkin tehokkaampia TestNG: ssä, koska se käyttää hyvin erilaista menetelmää testien suorittamiseen. Ymmärretään se alla olevan koodinpätkän avulla:

JUnit4: n käyttö

Luokan alapuolella kuvataan paketin käyttöä työskenneltäessä JUnit4: n kanssa:

paketti guru99.junit;tuo org.junit.runner.RunWith;tuo org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})julkisen luokan JunitTest {// Tämä luokka on tyhjä, sitä käytetään vain yllä olevien merkintöjen haltijana}

TestNG: n käyttäminen

TestNG käyttää xml: tä niputtamaan kaikki testit yhteen paikkaan. Alla xml kuvaa paketin käyttöä TestNG: n kanssa työskennellessä:

Ohita testi

Molempien avulla voimme ohittaa testin. Katsotaanpa se alla olevan koodin esimerkin avulla:

JUnit4: n käyttö

Koodikatkelman alapuolella kuvataan @ignore -merkinnän käyttöä työskenneltäessä JUnit4: n kanssa:

@Jättää huomiottapublic void -menetelmä1 (){System.out.println ("Käyttämällä @Ignore -ohjelmaa tämä suoritus ohitetaan");}

TestNG: n käyttäminen

Koodikatkelman alapuolella kuvataan @Test (käytössä = väärä) -merkinnän käyttöä TestNG: n kanssa työskenneltäessä:

@Test (käytössä = väärä)public void TestWithException (){System.out.println ("Menetelmä tulisi ohittaa, koska se ei ole vielä valmis");}

Poikkeustesti

Poikkeustestaus on saatavilla sekä TestNG: ssä että JUnit4: ssä. Sitä käytetään tarkistamaan, mikä poikkeus testistä heitetään?

JUnit4: n käyttö

Koodikatkelman alapuolella kuvataan poikkeustestin käyttöä työskenneltäessä JUnit4: n kanssa:

@Test (odotettavissa = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}

TestNG: n käyttäminen

Koodikatkelman alapuolella kuvataan poikkeustestin käyttöä TestNG: n kanssa työskenneltäessä:

@Test (expectedExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}

Aikalisä

Tämä ominaisuus on toteutettu sekä TestNg: ssä että JUnit4: ssä. Aikakatkaisua käytetään päättämään testi, joka kestää määritettyä aikaa kauemmin (millisekunteina).

JUnit4: n käyttö

Koodikatkelman alla kuvataan aikakatkaisun käyttöä työskenneltäessä JUnit4: n kanssa:

@Test (aikakatkaisu = 1000)public void -menetelmä1 (){vaikka (totta);}

TestNG: n käyttäminen

Koodikatkelman alapuolella kuvataan aikakatkaisun käyttöä työskenneltäessä TestNG: n kanssa:

@Test (timeOut = 1000)public void -menetelmä1 (){vaikka (totta);}

Parametroitu testi

JUnit tarjoaa helpomman ja luettavamman lähestymistavan testiin, joka tunnetaan nimellä Parametroitu testi. Sekä TestNG että JUnit tukevat parametrisoitua testiä, mutta eroavat toisistaan ​​siinä, miten ne määrittelevät parametrin arvon. Anna nähdä tämä yksi kerrallaan.

JUnit4: n käyttö

"@RunWith" - ja "@Parameter" -merkintöjä käytetään parametriarvon antamiseen yksikötestille. Huomautuksen @Parameters on palautettava Lista []. Tämä parametri välitetään luokan konstruktorille argumenttina.

@RunWith (arvo = Parameterized.class)julkisen luokan JunitTest {yksityinen numero;julkinen JunitTest6 (int-numero){this.number = numero;}@Parametersjulkinen staattinen kokoelma  data (){Object [] [] data = new Object [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (data);}@Testatapublic void parametriTest (){System.out.println ("Parametroitu numero on: + numero);}}

TestNG: n käyttäminen

TestNG: ssä käytetään XML-tiedostoa tai "@DataProvider" -parametria testaukseen.

Tässä menetelmässä ilmoitettu @Parameters -merkintä tarvitsee parametrin testausta varten. Parametrina käytetyt tiedot saadaan TestNG: n XML-määritystiedostoista. Tekemällä tämän voimme käyttää yhtä testitapausta uudelleen eri tietojoukoilla, ja voimme saada erilaisia ​​tuloksia.

julkisen luokan testi1 {@Testata@Parameters (arvo = "luku")public void parametriTest (int number){System.out.println ("Parametroitu numero on: + numero);}}

Katso alla oleva xml-tiedosto, jota käytetään yläluokassa:


Yhteenveto:

Näimme JUnit4- ja TestNG-vertailut yksityiskohdissa. Näimme myös, että molemmat ovat samanlaisia ​​paitsi parametrisoitu testi ja riippuvuustestit. Lyhyesti sanottuna voimme sanoa, että joustavuuden ja vaatimusten perusteella voimme valita minkä tahansa niistä yksikkötestaukseen.