Gan Testng, gan Junit ir testēšanas ietvars, ko izmanto vienību testēšanai. TestNG ir līdzīgs JUnit. Tam tiek pievienotas vēl dažas funkcionalitātes, kas padara TestNG jaudīgāku nekā JUnit.
Šī apmācība galvenokārt ir paredzēta, lai analizētu JUnit un TestNG funkcijas. Tas palīdz izstrādātājiem izlemt, kuru ietvaru izmantot vienības testēšanai. Vispirms analizēsim līdzības starp TestNG un JUnit4.
TestNG ir testēšanas sistēma, kuru iedvesmojuši JUnit un NUnit.
Šajā tabulā ir parādītas JUnit un TestNG atbalstītās funkcijas.
JUnit4 un TestNG funkciju salīdzinājums
Gan TestNG, gan JUnit4 izskatās līdzīgi, izņemot vienu vai divas funkcijas. Pieņemsim salīdzināt abus, lai ātri izlemtu, kura tehnoloģija ir labvēlīgāka vienību testēšanai. Zemāk esošajā tabulā ir uzsvērtas abu atbalstītās funkcijas:
Anotācijas
Gan JUnit, gan TestNG izmanto anotācijas, un gandrīz visas anotācijas izskatās līdzīgas.
TestNG JUnit4 izmanto @BeforeMethod, @ AfterMethod, kas līdzīgs @Before, @ After.
Gan TestNG, gan Junit4 taimautam izmanto @Test (taimauts = 1000). Plašāku informāciju skatiet zemāk esošajā tabulā-
SN | Apraksts | TestNG | 4. vienība |
---|---|---|---|
1 | Testa anotācija | @Pārbaude | @Pārbaude |
2 | Izpilda pirms tiek izmantota pirmā testa metode pašreizējā klasē | @BeforeClass | @BeforeClass |
3 | Izpilda pēc visām testa metodēm pašreizējā klasē | @Pēcstundas | @Pēcstundas |
4 | Izpilda pirms katras testa metodes | @BeforeMethod | @Pirms |
5 | Izpilda pēc katras testa metodes | @PēcMetode | @Pēc |
6 | anotācija, lai ignorētu testu | @Test (iespējot = nepatiesa) | @ignore |
7 | anotācija par izņēmumu | @Test (expectedExceptions = ArithmeticException.class) | @Test (paredzams = ArithmeticException.class) |
8 | pārtraukums | @Test (taimauts = 1000) | @Test (taimauts = 1000) |
9 | Izpilda pirms visiem testiem komplektā | @BeforeSuite | n / a |
10 | Izpilda pēc visiem testiem komplektā | @AfterSuite | n / a |
11 | Izpilda pirms testa | @BeforeTest | n / a |
12 | Izpilda pēc testa braucieniem | @AfterTest | n / a |
13 | Izpilda pirms tiek izsaukta pirmā testa metode, kas pieder kādai no šīm grupām | @PirmsGroups | n / a |
14 | palaist pēc pēdējās testa metodes, kas pieder kādai no šeit esošajām grupām | @PēcGroups | n / a |
Suite tests
Komplekti tiek izmantoti, lai kopā veiktu vairākus testus. Komplektus var izveidot, izmantojot gan TestNG, gan JUnit4. Tomēr programmatūras TestNG komplekti ir jaudīgāki, jo testu veikšanai tiek izmantota ļoti atšķirīga metode. Sapratīsim to, izmantojot tālāk sniegto koda fragmentu:
Izmantojot JUnit4
Zemāk klasē ir aprakstīta komplekta izmantošana, strādājot ar JUnit4:
pakete guru99.junit;importēt org.junit.runner.RunWith;importēt org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})publiskā klase JunitTest {// Šī klase paliek tukša, to izmanto tikai kā iepriekš minēto anotāciju turētāju}
Izmantojot TestNG
TestNG izmanto xml, lai apvienotu visus testus vienā vietā. Zemāk xml apraksta komplekta izmantošanu, strādājot ar TestNG:
Ignorēt testu
Izmantojot abus, mēs varam izlaist testu. Apskatīsim to, izmantojot tālāk sniegto kodu piemēru:
Izmantojot JUnit4
Zem koda fragmenta ir aprakstīta @ignore anotācijas izmantošana, strādājot ar JUnit4:
@ Ignorētpublic void method1 (){System.out.println ("Izmantojot @Ignore, šī izpilde tiek ignorēta");}
Izmantojot TestNG
Zem koda fragmenta ir aprakstīta @Test (enabled = false) anotācijas izmantošana, strādājot ar TestNG:
@Test (iespējots = nepatiesa)public void TestWithException (){System.out.println ("Metode ir jāignorē, jo tā vēl nav gatava");}
Izņēmuma pārbaude
Izņēmuma pārbaude ir pieejama gan TestNG, gan JUnit4. To izmanto, lai pārbaudītu, kurš izņēmums tiek izmests no testa?
Izmantojot JUnit4
Zem koda fragmenta aprakstīts izņēmuma testa izmantošana, strādājot ar JUnit4:
@Test (paredzams = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Izmantojot TestNG
Zem koda fragmenta aprakstīts izņēmuma testa izmantošana, strādājot ar TestNG:
@Test (expectedExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Pārtraukums
Šī funkcija ir ieviesta gan TestNg, gan JUnit4.Timeout tiek izmantots, lai pārtrauktu testu, kas aizņem ilgāku laiku nekā noteikts laiks (milisekundēs).
Izmantojot JUnit4
Zem koda fragmenta ir aprakstīts noildzes testa izmantošana, strādājot ar JUnit4:
@Test (taimauts = 1000)public void method1 (){kamēr (taisnība);}
Izmantojot TestNG
Zem koda fragmenta ir aprakstīts noildzes testa izmantošana, strādājot ar TestNG:
@Test (timeOut = 1000)public void method1 (){kamēr (taisnība);}
Parametrizēts tests
JUnit nodrošina vieglāku un lasāmāku pieeju testam, kas pazīstams kā Parameterized test. Gan TestNG, gan JUnit atbalsta parametrizētu testu, bet atšķiras pēc tā, kā tie nosaka parametra vērtību. Ļaujiet redzēt šo pa vienam.
Izmantojot JUnit4
Anotācijas "@RunWith" un "@Parameter" tiek izmantotas, lai nodrošinātu parametra vērtību vienības testam. Anotācijai @Parameters ir jāatgriež saraksts []. Šis parametrs kā arguments tiks nodots klases konstruktorā.
@RunWith (vērtība = Parameterized.class)publiskā klase JunitTest {privateint numurs;publiskais JunitTest6 (int numurs){this.number = skaitlis;}@Parametripubliskā statiskā kolekcija
Izmantojot TestNG
Programmā TestNG testēšanas parametra nodrošināšanai tiek izmantots XML fails vai "@DataProvider".
Šeit metodē deklarētajai @Parameters anotācijai ir nepieciešams parametrs testēšanai. Dati, kas tiek izmantoti kā parametrs, tiks sniegti TestNG XML konfigurācijas failos. To darot, mēs varam atkārtoti izmantot vienu testa gadījumu ar dažādām datu kopām, un mēs varam iegūt atšķirīgus rezultātus.
publiskās klases 1. pārbaudījums {@Pārbaude@Parameters (vērtība = "skaitlis")public void parameterTest (int numurs){System.out.println ("Parametrizētais skaitlis ir: + numurs);}}
Skatiet zemāk esošo xml failu, kas jāizmanto iepriekšējai klasei:
Kopsavilkums:
Mēs detalizēti redzējām JUnit4 un TestNG salīdzinājumu. Mēs arī redzējām, ka abi ir līdzīgi, izņemot parametru testu un atkarības testu. Īsāk sakot, mēs varam teikt, ka, pamatojoties uz elastību un prasībām, mēs varam izvēlēties jebkuru no tiem vienības testēšanai.
- Nākamais