TestNG Vs JUnit: Kakšna je razlika?

Kazalo:

Anonim

Tako Testng kot Junit sta preskusni okvir, ki se uporablja za enotno preskušanje. TestNG je podoben JUnit. Zanj je dodanih nekaj več funkcij, zaradi katerih je TestNG zmogljivejši od JUnit.

Ta vadnica je namenjena predvsem analiziranju funkcij JUnit in TestNG. Razvijalcem pomaga pri odločitvi, kateri okvir naj bo uporabljen za enotno testiranje. Najprej analizirajmo podobnosti med TestNG in JUnit4.

TestNG je preskusni okvir, ki ga navdihujejo JUnit in NUnit.

Tu je tabela, ki prikazuje funkcije, ki jih podpirata JUnit in TestNG.

Primerjava funkcij JUnit4 in TestNG

Tako TestNG kot JUnit4 sta videti podobna, razen ene ali dveh funkcij. Oglejmo si primerjavo med obema, da se hitro odločimo, katera tehnologija je ugodnejša za enotno testiranje. Spodnja tabela prikazuje funkcije, ki jih podpirata oba:

Pripisi

Tako JUnit kot TestNG uporabljata pripise in skoraj vsi pripisi so podobni.

TestNG uporablja @BeforeMethod, @ AfterMethod, podobno kot @Before, @ After v JUnit4.

Tako TestNG kot Junit4 uporabljata @Test (timeout = 1000) za časovno omejitev. Za več podrobnosti poglejte v spodnjo tabelo -

SN Opis TestNG JUNIT 4
1. Testni pripis @Test @Test
2. Izvede se, preden se v trenutnem razredu prikliče prva preskusna metoda @BeforeClass @BeforeClass
3. Izvede se po vseh preskusnih metodah v trenutnem razredu @Po pouku @Po pouku
4. Izvede se pred vsako preskusno metodo @BeforeMethod @ Pred tem
5. Izvede se po vsaki preskusni metodi @AfterMethod @Po
6. pripomba za prezrtje testa @Test (omogoči = napačno) @ignore
7. opomba za izjemo @Test (predvideniExceptions = ArithmeticException.class) @Test (pričakovano = ArithmeticException.class)
8. odmor @Test (timeout = 1000) @Test (timeout = 1000)
9. Izvede se pred vsemi testi v zbirki @BeforeSuite n / a
10. Izvede se po vseh testih v zbirki @AfterSuite n / a
11. Izvede se pred preskusom @BeforeTest n / a
12. Izvede se po preizkusu @AfterTest n / a
13. Izvede se pred priklicem prve preskusne metode, ki pripada kateri koli od teh skupin @BeforeGroups n / a
14. zaženite po zadnji preskusni metodi, ki spada v katero koli skupino tukaj @AfterGroups n / a

Suite Test

Paketi se uporabljajo za skupno izvajanje več testov. Suite je mogoče ustvariti z uporabo TestNG in JUnit4. Vendar pa so suite močnejše v programu TestNG, saj uporablja zelo različne metode za izvajanje testov. Razumejmo ga s pomočjo delčka kode, kot je navedeno spodaj:

Uporaba JUnit4

Spodnji razred opisuje uporabo suita med delom z JUnit4:

paket guru99.junit;import org.junit.runner.RunWith;uvoz org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})javni razred JunitTest {// Ta razred ostane prazen, uporablja se le kot držalo za zgornje pripise}

Uporaba TestNG

TestNG uporablja xml za združevanje vseh testov na enem mestu. Spodaj xml opisuje uporabo suite med delom s TestNG:

Prezri preskus

Z uporabo obeh lahko preskočimo preskus. Poglejmo ga na primeru kode, kot je prikazano spodaj:

Uporaba JUnit4

Spodnji delček kode opisuje uporabo pripombe @ignore med delom z JUnit4:

@ Prezrimetoda javne praznine1 (){System.out.println ("Uporaba @Ignore je ta izvedba prezrta");}

Uporaba TestNG

Spodnji delček kode opisuje uporabo oznake @Test (omogočeno = napačno) med delom s TestNG:

@Test (omogočeno = napačno)javna praznina TestWithException (){System.out.println ("Metodo je treba prezreti, ker še ni pripravljena");}

Preskus izjem

Preskus izjem je na voljo tako v TestNG kot v JUnit4. Uporablja se za preverjanje, katera izjema se vrže iz testa?

Uporaba JUnit4

Spodnji delček kode opisuje uporabo testa izjem pri delu z JUnit4:

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

Uporaba TestNG

Spodnji delček kode opisuje uporabo testa izjem pri delu s TestNG:

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

Odmor

Ta funkcija je implementirana v TestNg in JUnit4.Timeout se uporablja za zaključek testa, ki traja dlje od določenega časa (v milisekundah).

Uporaba JUnit4

Spodnji delček kode opisuje uporabo preskusa časovne omejitve med delom z JUnit4:

@Test (timeout = 1000)metoda javne praznine1 (){medtem ko (res);}

Uporaba TestNG

Spodnji delček kode opisuje uporabo preskusa časovne omejitve med delom s TestNG:

@Test (timeOut = 1000)metoda javne praznine1 (){medtem ko (res);}

Parametrizirani preskus

JUnit omogoča enostavnejši in berljivejši pristop k preskusu, znan kot Parametrizirani test. Tako TestNG kot JUnit podpirata parametrizirani test, vendar se razlikujeta v načinu določanja vrednosti parametra. Oglejmo si enega za drugim.

Uporaba JUnit4

Pripisa "@RunWith" in "@Parameter" se uporabljata za podajanje vrednosti parametra za preskus enote. Pripis @Parameters mora vrniti List []. Ta parameter bo kot argument poslan v konstruktor razreda.

@RunWith (vrednost = Parameterized.class)javni razred JunitTest {privateint številka;javni JunitTest6 (int številka){this.number = število;}@Parametersjavna statična zbirka  podatki (){Podatki o objektu [] [] = novi objekt [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (podatki);}@Testpublic void parameterTest (){System.out.println ("Parametrizirana številka je: + številka);}}

Uporaba TestNG

V programu TestNG se za zagotavljanje parametra za preskušanje uporablja datoteka XML ali "@DataProvider".

Tu pripomba @Parameters, deklarirana v metodi, potrebuje parameter za testiranje. Podatki, uporabljeni kot parameter, bodo prikazani v konfiguracijskih datotekah XML podjetja TestNG. S tem lahko ponovno uporabimo en testni primer z različnimi nabori podatkov in dobimo različne rezultate.

javni razred Test1 {@Test@Parameters (value = "number")public void parameterTest (int številka){System.out.println ("Parametrizirana številka je: + številka);}}

Glejte spodnjo datoteko xml, ki jo boste uporabili za zgornji razred:

Povzetek:

Podrobno smo videli primerjavo JUnit4 in TestNG. Videli smo tudi, da sta si podobna, razen parametriziranega testa in testa odvisnosti. Na kratko lahko rečemo, na podlagi prilagodljivosti in zahtev lahko za enotno testiranje izberemo katerega koli od njih.