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
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.
- Järgmine