TestNG Vs JUnit: Mis vahe on?

Lang L: none (table-of-contents):

Anonim

Mõlemad Testng ja Junit on üksuste testimiseks kasutatavad testimisraamistikud. TestNG on sarnane JUnitiga. Sellele lisatakse veel vähe funktsionaalsusi, mis muudavad TestNG võimsamaks kui JUnit.

See õpetus on keskendunud peamiselt JUniti ja TestNG funktsioonide analüüsimisele. See aitab arendajatel otsustada, millist raamistikku üksuste testimiseks kasutada. Analüüsime kõigepealt TestNG ja JUnit4 sarnasusi.

TestNG on testimisraamistik, mis on inspireeritud JUnitist ja NUnitist.

Siin on tabel, mis näitab funktsioone, mida JUnit ja TestNG toetavad.

JUnit4 ja TestNG funktsioonide võrdlus

Nii TestNG kui ka JUnit4 näevad välja sarnased, välja arvatud üks või kaks funktsiooni. Tehkem nende kahe võrdlus, et kiiresti otsustada, milline tehnoloogia on üksuste testimiseks soodsam. Tabeli all on toodud funktsioonid, mida mõlemad toetavad:

Annotatsioonid

Nii JUnit kui ka TestNG kasutavad märkmeid ja peaaegu kõik märkused näevad välja sarnased.

TestNG kasutab JUnit4-s @BeforeMethod, @ AfterMethod, mis on sarnane @Before, @ After'iga.

Nii TestNG kui ka Junit4 kasutavad ajalõppuks @Test (timeout = 1000). Lisateavet leiate allolevast tabelist-

SN Kirjeldus TestNG 4. üksus
1 Testi märkimine @Test @Test
2 Käivitatakse enne, kui praeguses klassis rakendatakse esimest katsemeetodit @BeforeClass @BeforeClass
3 Käivitatakse pärast kõiki praeguse klassi katsemeetodeid @AfterClass @AfterClass
4 Käivitatakse enne iga katsemeetodit @BeforeMethod @Enne
5 Käivitatakse pärast iga katsemeetodit @AfterMethod @Pärast
6 märge testi eiramiseks @Test (enable = false) @ignore
7 märkus erandiks @Test (oodatudExceptions = ArithmeticException.class) @Test (eeldatav = ArithmeticException.class)
8 aeg maha @Test (ajalõpp = 1000) @Test (ajalõpp = 1000)
9 Käivitatakse enne kõiki sviidi teste @BeforeSuite n / a
10 Teostatakse pärast kõiki sviidi teste @AfterSuite n / a
11 Käivitatakse enne testi käivitamist @BeforeTest n / a
12 Käivitatakse pärast katsesõitu @AfterTest n / a
13 Käivitatakse enne esimese katsemeetodi käivitamist, mis kuulub mõnda neist rühmadest @BeforeGroups n / a
14 käivitage pärast viimast katsemeetodit, mis kuulub mis tahes siinsesse rühma @AfterGroups n / a

Sviidi test

Sviite kasutatakse mitme testi ühiseks läbiviimiseks. Pakette saab luua nii TestNG kui ka JUnit4 abil. Sviidid on aga TestNG-s võimsamad, kuna see kasutab testide sooritamiseks väga erinevat meetodit. Mõistame seda allpool toodud koodilõigu abil:

JUnit4 kasutamine

Allpool klass kirjeldab komplekti kasutamist JUnit4-ga töötamisel:

pakett guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})avalik klass JunitTest {// See klass jääb tühjaks, seda kasutatakse ainult ülaltoodud märkuste hoidjana}

TestNG kasutamine

TestNG kasutab xml-i kõigi testide ühendamiseks ühes kohas. Allpool xml kirjeldatakse komplekti kasutamist TestNG-ga töötamisel:

Ignoreeri testi

Mõlemat kasutades võime testi vahele jätta. Vaatame seda allpool toodud koodinäite abil:

JUnit4 kasutamine

Koodijupi all kirjeldatakse märkuse @ignore kasutamist JUnit4-ga töötamisel:

@ Ignoreeripublic void meetod1 (){System.out.println ("Kasutades @Ignore, seda täitmist ignoreeritakse");}

TestNG kasutamine

Koodijupi all kirjeldatakse märkuse @Test (enabled = false) kasutamist testNG-ga töötamisel:

@Test (lubatud = vale)public void TestWithException (){System.out.println ("Meetodit tuleks ignoreerida, kuna see pole veel valmis");}

Eranditest

Eranditestimine on saadaval nii TestNG-s kui ka JUnit4-s. Selle abil kontrollitakse, milline erand testist välja visatakse?

JUnit4 kasutamine

Koodijupi all kirjeldatakse eranditesti kasutamist JUnit4-ga töötamisel:

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

TestNG kasutamine

Koodijupi all kirjeldatakse eranditesti kasutamist testNG-ga töötamisel:

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

Aeg maha

Seda funktsiooni rakendatakse nii versioonides TestNg kui ka JUnit4. Ajalõppu kasutatakse testi lõpetamiseks, mis võtab määratud ajast kauem aega (millisekundites).

JUnit4 kasutamine

Koodijupi all kirjeldatakse ajalõppu testi kasutamist JUnit4-ga töötamisel:

@Test (ajalõpp = 1000)public void meetod1 (){samas (tõsi);}

TestNG kasutamine

Koodijupi all kirjeldatakse ajalõpu testi kasutamist testNG-ga töötamisel:

@Test (timeOut = 1000)public void meetod1 (){samas (tõsi);}

Parameetriline test

JUnit pakub hõlpsamat ja loetavamat lähenemist testimisele, mida nimetatakse parameetritega testiks. Nii TestNG kui ka JUnit toetavad parameetriga testimist, kuid erinevad selle poolest, kuidas nad parameetri väärtust määratlevad. Las see ükshaaval näha.

JUnit4 kasutamine

Märkusi "@RunWith" ja "@Parameter" kasutatakse ühikutesti parameetri väärtuse andmiseks. Annotatsioon @Parameters peab tagastama loendi []. See parameeter edastatakse argumendina klassi konstruktorile.

@RunWith (väärtus = Parameterized.class)avalik klass JunitTest {privateint number;avalik JunitTest6 (int number){see.number = arv;}@ Parameetridavalik staatiline kogu  andmed (){Objekt [] [] andmed = uus objekt [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (andmed);}@Testpublic void parameterTest (){System.out.println ("Parameetri number on: + number);}}

TestNG kasutamine

TestNG-s kasutatakse testimiseks parameetri pakkumiseks XML-faili või faili "@DataProvider".

Siin vajab meetodis deklareeritud @Parameters annotatsiooni testimiseks parameetrit. Parameetrina kasutatud andmed esitatakse TestNG XML-i konfiguratsioonifailides. Seda tehes saame taaskasutada ühte testjuhtumit erinevate andmekogumitega ja võime saada erinevaid tulemusi.

avaliku klassi test1 {@Test@Parameters (väärtus = "number")public void parameterTest (int number){System.out.println ("Parameetri number on: + number);}}

Vaadake allpool xml-faili, mida kasutatakse klassi ületamiseks


Kokkuvõte:

Nägime üksikasjades JUnit4 ja TestNG võrdlust. Samuti nägime, et mõlemad on sarnased, välja arvatud parameetriline test ja sõltuvustesti. Lühidalt öeldes võime öelda, et paindlikkuse ja nõuete põhjal võime valida üks neist üksuste testimiseks.