TestNG Vs JUnit: Mi a különbség?

Tartalomjegyzék:

Anonim

A Testng és a Junit egyaránt az egység teszteléséhez használt tesztelési keretrendszer. A TestNG hasonló a JUnithez. Kevés olyan funkcióval bővül, amely a TestNG-t erősebbé teszi, mint a JUnit.

Ez az oktatóanyag elsősorban a JUnit és a TestNG szolgáltatásainak elemzésére összpontosít. Segít a fejlesztőknek eldönteni, hogy melyik keretet kell használni az egység teszteléséhez. Először elemezzük a TestNG és a JUnit4 közötti hasonlóságokat.

A TestNG egy tesztelési keretrendszer, amelyet a JUnit és a NUnit ihletett.

Itt található a táblázat, amely bemutatja a JUnit és a TestNG által támogatott szolgáltatásokat.

JUnit4 és TestNG Feature összehasonlítás

A TestNG és a JUnit4 is hasonlóan néz ki, kivéve egy vagy két funkciót. Vessünk egy összehasonlítást a kettő között, hogy gyorsan eldönthessük, melyik technológia előnyösebb az egység tesztelése szempontjából. Az alábbi táblázat a mindkettő által támogatott funkciókat emeli ki:

Megjegyzések

A JUnit és a TestNG is használ feliratozásokat, és szinte az összes feljegyzés hasonlónak tűnik.

A TestNG a @BeforeMethod-ot, a @Before-hoz hasonló @ AfterMethod-ot használja a JUnit4-ben.

A TestNG és a Junit4 is @Test (timeout = 1000) időtúllépéshez használ. További részletekért ellenőrizze az alábbi táblázatot-

SN Leírás TestNG JUnit 4
1 Tesztjegyzet @Teszt @Teszt
2 Mielőtt végrehajtaná az első vizsgálati módszert az aktuális osztályban @Óra előtt @Óra előtt
3 Az aktuális osztály összes tesztmódszere után végrehajtja @Óra után @Óra után
4 Minden vizsgálati módszer előtt végrehajt @BeforeMethod @Előtt
5. Minden vizsgálati módszer után végrehajtódik @AfterMethod @Után
6. jelölés a teszt figyelmen kívül hagyásához @Test (engedély = hamis) @figyelmen kívül hagyni
7 felirat a kivételhez @Test (várhatóExceptions = ArithmeticException.class) @Test (várható = ArithmeticException.class)
8. időtúllépés @Test (időtúllépés = 1000) @Test (időtúllépés = 1000)
9. A csomag minden tesztje előtt végrehajtja @BeforeSuite n / a
10. A csomagban végzett összes teszt után végrehajtódik @AfterSuite n / a
11. A teszt futtatása előtt hajt végre @BeforeTest n / a
12. A teszt futtatása után hajt végre @AfterTest n / a
13. Az első vizsgálati módszer meghívása előtt hajt végre, amely ezen csoportok bármelyikéhez tartozik @BeforeGroups n / a
14 futtassa az utolsó vizsgálati módszer után, amely bármelyik csoportba tartozik @AfterGroups n / a

Suite Test

A csomagokat több teszt együttes végrehajtására használják. A csomagok a TestNG és a JUnit4 segítségével egyaránt létrehozhatók. A lakosztályok azonban erőteljesebbek a TestNG-ben, mivel nagyon különböző módszert használ a tesztek végrehajtására. Értsük meg az alábbi kódrészlettel:

A JUnit4 használata

Az osztály alatt a csomag használatát ismertetjük a JUnit4 használatakor:

csomag guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})nyilvános osztály JunitTest {// Ez az osztály üres marad, csak a fenti kommentárok tulajdonosaként használható}

A TestNG használata

A TestNG az xml-t használja az összes teszt egy csomagba csomagolásához. Az xml alatt leírja a csomag használatát, amikor a TestNG-vel dolgozik:

A teszt figyelmen kívül hagyása

Mindkettő használatával kihagyhatunk egy tesztet. Nézzük meg az alábbi kódpéldával:

A JUnit4 használata

Az alábbi kódrészlet a @ignore kommentár használatát írja le a JUnit4 használatakor:

@Figyelmen kívül hagynipublic void method1 (){System.out.println ("Az @Ignore használatával ezt a végrehajtást figyelmen kívül hagyjuk");}

A TestNG használata

Az alábbi kódrészlet a @Test (enabled = false) felirat használatát írja le a TestNG használatakor:

@Test (engedélyezve = hamis)public void TestWithException (){System.out.println ("A módszert figyelmen kívül kell hagyni, mert még nem áll készen");}

Kivétel teszt

Kivételes tesztelés mind a TestNG, mind a JUnit4 verzióban elérhető. Ellenőrzésére szolgál, melyik kivételt dobják ki a tesztből?

A JUnit4 használata

Az alábbi kódrészlet a kivétel teszt használatát írja le a JUnit4 használatakor:

@Test (várható = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}

A TestNG használata

Az alábbi kódrészlet a kivétel teszt használatát írja le a TestNG használatakor:

@Test (várhatóExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}

Időtúllépés

Ez a szolgáltatás a TestNg és a JUnit4 programokban egyaránt megvalósításra kerül. Az időtúllépés a megadott időnél (milliszekundumokban) hosszabb ideig tartó teszt befejezésére szolgál.

A JUnit4 használata

Az alábbi kódrészlet az időkorlát teszt használatát írja le a JUnit4 használatakor:

@Test (időtúllépés = 1000)public void method1 (){míg (igaz);}

A TestNG használata

Az alábbi kódrészlet az időtúllépés-teszt használatát írja le a TestNG használatakor:

@Test (timeOut = 1000)public void method1 (){míg (igaz);}

Paraméteres teszt

A JUnit könnyebb és olvashatóbb megközelítést nyújt a tesztnek, amelyet Parameterizált tesztnek neveznek. A TestNG és a JUnit egyaránt támogatja a paraméterezett tesztet, de különböznek a paraméter értékének meghatározásában. Hadd lássa ezt egyenként.

A JUnit4 használata

A "@RunWith" és a "@Parameter" kommentárok szolgálnak az egység teszt paraméterértékének megadására. A @Parameters kommentárnak vissza kell adnia a Lista [] értéket. Ez a paraméter argumentumként átkerül az osztály konstruktorába.

@RunWith (érték = Parameterized.class)nyilvános osztály JunitTest {privateint szám;nyilvános JunitTest6 (int szám){ez.szám = szám;}@Paramétereknyilvános statikus Gyűjtemény  adatok (){Object [] [] data = new Object [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (adatok);}@Tesztpublic void paraméterTeszt (){System.out.println ("A paraméterezett szám: + szám);}}

A TestNG használata

A TestNG-ben az XML fájlt vagy a "@DataProvider" paramétert adják meg a teszteléshez.

Itt a metódusban deklarált @Parameters kommentárnak szüksége van egy paraméterre a teszteléshez. A paraméterként használt adatokat a TestNG XML konfigurációs fájljai szolgáltatják. Ezzel egyetlen tesztesetet újra felhasználhatunk különböző adatsorokkal, és különböző eredményeket kaphatunk.

nyilvános osztály teszt1 {@Teszt@Parameters (érték = "szám")public void paraméterTeszt (int szám){System.out.println ("A paraméterezett szám: + szám);}}

Lásd az alábbi xml fájlt, amelyet a fenti osztályhoz használhat:


Összegzés:

Részletesen láttuk a JUnit4 és a TestNG összehasonlítását. Azt is láttuk, hogy mindkettő hasonló, kivéve a paraméterezett tesztet és a függőségi tesztet. Röviden elmondhatjuk, hogy a rugalmasság és az igények alapján bármelyiket választhatjuk az egység teszteléséhez.