TestNG vs JUnit – Különbség köztük

Kulcs különbség között TestNG és a JUnit

  • TestNG egy olyan Java-alapú keretrendszer, míg JUnit egy nyílt forráskódú Unit Testing Framework a JAVA számára.
  • Összehasonlítása TestNG Vs JUnit, TestNG az annotációkat könnyebb használni és megérteni, mint JUnit.
  • TestNG lehetővé teszi párhuzamos tesztek létrehozását, míg JUnit nem támogatja a párhuzamos tesztek futtatását.
  • In TestNG, A tesztesetek csoportosíthatók, míg a JUnit, A tesztek csoportosítása nem lehetséges.
TestNG vs JUnit
TestNG vs JUnit

Mi a TestNG?

TestNG egy automatizálási tesztelési keretrendszer, amelyben az NG a „Next Generation” rövidítése. TestNG ihlette JUnit amely a megjegyzéseket (@) használja. TestNG leküzdi a hátrányait JUnit és elkészítésére tervezték végpontok közötti tesztelés könnyű.

<p></p> TestNG, akkor megfelelő jelentést készíthet, és könnyen megtudhatja, hány teszteset sikeres, sikertelen és kihagyott. A sikertelen teszteseteket külön is végrehajthatja.

Mi az a Junit?

JUnit egy nyílt forráskódú egység Tesztelés JAVA keretrendszer. Ez hasznos Java A fejlesztők megismételhető tesztek írásához és futtatásához. Erich Gamma és Kent Beck először fejleszti. Ez az xUnit architektúra egy példánya. Ahogy a neve is sugallja, erre használják Egység tesztelése egy kis kódrészletből.

A tesztvezérelt módszertant követő fejlesztőknek minden kód előtt először egységtesztet kell írniuk és végrehajtaniuk.

Ha végzett a kóddal, végre kell hajtania az összes tesztet, és át kell mennie. Minden alkalommal, amikor bármilyen kódot ad hozzá, újra le kell hajtania az összes tesztesetet, és meg kell győződnie arról, hogy semmi nem sérült.

Közötti különbségek JUnit és a TestNG

Mindkét TestNG és a JUnit4 hasonlónak tűnik, kivéve egy-két jellemzőt. Hasonlítsuk össze a kettőt, hogy gyorsan eldöntsük, melyik technológia kedvez az egységtesztelésnek. Az alábbi táblázat kiemeli a két által támogatott funkciókat:

Közötti különbségek JUnit és a TestNG

Magyarázatok

Mindkét JUnit és a TestNG megjegyzéseket használ, és szinte az összes megjegyzés hasonlónak tűnik.

TestNG a @BeforeMethod ,@AfterMethod-ot használja, hasonlóan a @Before ,@After-hez JUnit4.

Mindkét TestNG és a Junit4 a @Test(timeout = 1000)-t használja az időtúllépéshez. További részletekért tekintse meg az alábbi táblázatot-

SNA Leírás TestNG JUnit 4
1 Teszt annotáció @Teszt @Teszt
2 Az aktuális osztály első tesztmetódusának meghívása előtt hajtódik végre @Ó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ódik @BeforeMethod @Előtt
5 Minden vizsgálati módszer után végrehajtódik @AfterMethod @Után
6 megjegyzés figyelmen kívül hagyásához @Test(enable=false) @figyelmen kívül hagyni
7 megjegyzés kivételnek @Test(expectedExceptions = ArithmeticException.class) @Test(várható = AritmetikaiKivétel.osztály)
8 timeout @Teszt(időtúllépés = 1000) @Teszt(időtúllépés = 1000)
9 A programcsomagban lévő összes teszt előtt végrehajtódik @BeforeSuite N / A
10 A programcsomag összes tesztje után végrehajtódik @AfterSuite N / A
11 A teszt futtatása előtt végrehajtódik @BeforeTest N / A
12 Próbafutás után fut le @AfterTest N / A
13 Azelőtt fut le, hogy az első olyan tesztmódszert meghívnák, amely e csoportok bármelyikéhez tartozik @BeforeGroups N / A
14 futtassa az utolsó vizsgálati módszer után, amely bármelyik itt található csoporthoz tartozik @AfterGroups N / A

Suite teszt

A lakosztályokat több teszt együttes végrehajtására használják. Lakosztályok mindkettővel létrehozhatók TestNG és a JUnit4. A lakosztályok azonban erősebbek TestNG mivel nagyon eltérő módszert használ a tesztek végrehajtására. Értsük meg ezt az alábbi kódrészlet segítségével:

<p></p> JUnit4

Az alábbi osztály leírja a csomag használatát munka közben JUnit4:

package guru99.junit;		
import org.junit.runner.RunWith;		
import org.junit.runners.Suite;		

@RunWith(Suite.class)				
@Suite.SuiteClasses({				
    SuiteTest1.class,			
    SuiteTest2.class,			

})		

public class JunitTest {		
// This class remains empty,it is used only as a holder for the above annotations		
}

<p></p> TestNG

TestNG xml-t használ az összes teszt egy helyre történő összecsomagolásához. Az xml alább leírja a programcsomag használatát a TestNG:

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<classes>
<class name="com.guru99.SuiteTest1" />
<class name="com.guru99.SuiteTest2" />
</classes>
</test>
</suite>

Teszt figyelmen kívül hagyása

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

<p></p> JUnit4

Az alábbi kódrészlet leírja az @ignore megjegyzés használatát a munka során JUnit4:

@Ignore
public void method1() 
{
	System.out.println("Using @Ignore , this execution is ignored");
}

<p></p> TestNG

Az alábbi kódrészlet leírja a @Test(enabled=false) megjegyzés használatát a munka során TestNG:

@Test(enabled=false)
public void TestWithException()
{  
	System.out.println("Method should be ignored as it's not ready yet");
}

Kivétel teszt

A kivételtesztelés mindkét országban elérhető TestNG és a JUnit4. Annak ellenőrzésére szolgál, hogy melyik kivétel kerül ki a tesztből?

<p></p> JUnit4

Az alábbi kódrészlet leírja a kivételteszt használatát, miközben dolgozik JUnit4:

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

<p></p> TestNG

Az alábbi kódrészlet leírja a kivételteszt használatát, miközben dolgozik TestNG:

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

Timeout

Ez a funkció a TestNg és a JUnit4. Az időtúllépés a megadott időnél tovább tart (ezredmásodpercben).

<p></p> JUnit4

Az alábbi kódrészlet leírja az időtúllépési teszt használatát a munka során JUnit4:

@Test(timeout = 1000)  
public void method1()
{  
	while (true);  
}

<p></p> TestNG

Az alábbi kódrészlet leírja az időtúllépési teszt használatát a munka során TestNG:

@Test(timeOut = 1000)  
public void method1()
{  
	while (true);  
}

Paraméterezett teszt

JUnit egyszerűbb és olvasható megközelítést biztosít a paraméterezett teszt néven ismert teszteléshez. Mindkét TestNG és a JUnit támogatja a paraméterezett tesztet, de különbözik a paraméterérték meghatározásának módjában. Lássuk ezt egyenként.

<p></p> JUnit4

A „@RunWith” és „@Parameter” megjegyzések paraméterértéket biztosítanak az egységteszthez. A @Parameters megjegyzésnek List[]-t kell visszaadnia. Ez a paraméter argumentumként kerül átadásra az osztálykonstruktorba.

@RunWith(value = Parameterized.class)
public class JunitTest{
    
    privateint number;
    
    public JunitTest6(int number)
 {
    this.number = number;
     }

     @Parameters
    public static Collection<Object[]> data() 
{
       Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
    returnArrays.asList(data);
    }
     
     @Test
    public void parameterTest()
 {
    System.out.println("Parameterized Number is : " + number);
     }
}

<p></p> TestNG

In TestNG, az XML fájl vagy a „@DataProvider” a teszteléshez szükséges paraméter biztosítására szolgál.

Itt a metódusban deklarált @Parameters annotációhoz paraméterre van szükség a teszteléshez. A paraméterként használt adatok megadják TestNGXML konfigurációs fájljait. Ezzel újra felhasználhatunk egyet Teszt eset különböző adatkészletekkel, és különböző eredményeket kaphatunk.

public class Test1 {

    @Test
    @Parameters(value="number")
    public void parameterTest(int number)
	{
    	System.out.println("Parameterized Number is : " + number);
    }
     
}

Lásd lentebb a fenti osztályhoz használandó xml fájlt:

<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
    
<parameter name="number" value="2"/>    

<classes>
<class name="com.guru99.Test1" />
</classes>
</test>
</suite>

Összegzésként

Láttuk JUnit4 és TestNG összehasonlítás a részletekben. Azt is láttuk, hogy mindkettő hasonló, kivéve a paraméterezett tesztet és a függőségi tesztet. Röviden azt mondhatjuk, hogy a rugalmasság és az igények alapján bármelyiket kiválaszthatjuk az egységtesztre.