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