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
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.
- Seuraava