TestNG vs JUnit – Ero niiden välillä

Keskeinen ero TestNG ja JUnit

  • TestNG on Java-pohjainen kehys JUnit on avoimen lähdekoodin Unit Testing Framework JAVA:lle.
  • Vertaamalla TestNG Vs JUnit, TestNG huomautuksia on helpompi käyttää ja ymmärtää kuin JUnit.
  • TestNG mahdollistaa rinnakkaisten testien luomisen, kun taas JUnit ei tue rinnakkaisten testien suorittamista.
  • In TestNG, Testitapaukset voidaan ryhmitellä yhteen ollessaan JUnit, Ryhmäping testien tekeminen yhdessä ei ole mahdollista.
TestNG vs JUnit
TestNG vs JUnit

Mikä on TestNG?

TestNG on automaation testauskehys, jossa NG tarkoittaa "seuraavaa sukupolvea". TestNG on inspiroinut JUnit joka käyttää huomautuksia (@). TestNG voittaa haitat JUnit ja on suunniteltu tekemään end-to-end-testaus helppoa.

Käyttäminen TestNG, voit luoda oikean raportin ja saada helposti selville, kuinka monta testitapausta on hyväksytty, epäonnistunut ja ohitettu. Voit suorittaa epäonnistuneet testitapaukset erikseen.

Mikä on Junit?

JUnit on avoimen lähdekoodin yksikkö Testaus Framework JAVA:lle. Se on hyödyllinen Java Kehittäjät voivat kirjoittaa ja suorittaa toistettavia testejä. Erich Gamma ja Kent Beck kehittävät sen aluksi. Se on esimerkki xUnit-arkkitehtuurista. Kuten nimestä voi päätellä, sitä käytetään Yksikkötestaus pienestä koodipalasta.

Testausmenetelmiä noudattavien kehittäjien on kirjoitettava ja suoritettava yksikkötesti ennen koodia.

Kun olet valmis koodin kanssa, sinun tulee suorittaa kaikki testit, ja sen pitäisi läpäistä. Joka kerta kun koodi lisätään, sinun on suoritettava kaikki testitapaukset uudelleen ja varmistettava, ettei mikään ole rikki.

Erot JUnit ja TestNG

molemmat TestNG ja JUnit4 näyttää samanlaiselta, lukuun ottamatta yhtä tai kahta ominaisuutta. Vertaillaan näitä kahta, jotta voimme nopeasti päättää, kumpi tekniikka on edullisempi yksikkötestauksessa. Alla oleva taulukko korostaa molempien tukemia ominaisuuksia:

Erot JUnit ja TestNG

Merkinnät

molemmat JUnit ja TestNG käyttää huomautuksia ja melkein kaikki merkinnät näyttävät samanlaisilta.

TestNG käyttää @BeforeMethod ,@AfterMethod -menetelmää, joka on samanlainen kuin @Before ,@After in JUnit4.

molemmat TestNG ja Junit4 käyttää @Test(timeout = 1000) aikakatkaisuun. Katso alla olevasta taulukosta lisätietoja -

SN Tuotetiedot TestNG JUnit 4
1 Testimerkintä @Testata @Testata
2 Suoritetaan ennen kuin ensimmäinen testimenetelmä kutsutaan nykyisessä luokassa @Ennen tuntia @Ennen tuntia
3 Suorittaa kaikkien nykyisen luokan testimenetelmien jälkeen @Oppitunnin jälkeen @Oppitunnin jälkeen
4 Suoritetaan ennen jokaista testimenetelmää @BeforeMethod @Ennen
5 Suoritetaan jokaisen testimenetelmän jälkeen @AfterMethod @Jälkeen
6 huomautus testin ohittamiseksi @Test(enable=false) @jättää huomiotta
7 huomautus poikkeuksesta @Test(expectedExceptions = Aritmeettinen poikkeus.luokka) @Test(odotettu = Aritmeettinen poikkeus.luokka)
8 aikakatkaisu @Test(aikakatkaisu = 1000) @Test(aikakatkaisu = 1000)
9 Suoritetaan ennen kaikkia sarjan testejä @BeforeSuite n / a
10 Suorittaa kaikkien sarjassa olevien testien jälkeen @AfterSuite n / a
11 Suoritetaan ennen testiajoa @BeforeTest n / a
12 Toimii koeajon jälkeen @AfterTest n / a
13 Suoritetaan ennen kuin kutsutaan ensimmäistä testimenetelmää, joka kuuluu johonkin näistä ryhmistä @BeforeGroups n / a
14 suoritetaan viimeisen testimenetelmän jälkeen, joka kuuluu mihin tahansa tässä olevista ryhmistä @AfterGroups n / a

Suite Test

Sviittejä käytetään useiden testien suorittamiseen yhdessä. Sviittejä voidaan luoda molempia käyttämällä TestNG ja JUnit4. Sviitit ovat kuitenkin tehokkaampia TestNG koska se käyttää hyvin erilaista menetelmää testien suorittamiseen. Ymmärretään se alla olevan koodinpätkän avulla:

Käyttäminen JUnit4

Alla olevassa luokassa kuvataan sarjan käyttöä työskennellessäsi 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		
}

Käyttäminen TestNG

TestNG käyttää xml:ää kaikkien testien niputtamiseksi yhteen paikkaan. Alla xml kuvaa paketin käyttöä työskennellessään 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>

Ohita testi

Molempia käyttämällä voimme ohittaa testin. Katsotaanpa sitä alla olevan koodiesimerkin avulla:

Käyttäminen JUnit4

Alla koodinpätkä kuvaa @ignore-merkinnän käyttöä työskennellessään JUnit4:

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

Käyttäminen TestNG

Alla koodinpätkä kuvaa @Test(enabled=false) -merkinnän käyttöä työskennellessään TestNG:

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

Poikkeustesti

Poikkeustestaus on saatavilla molemmissa TestNG ja JUnit4. Sitä käytetään tarkistamaan, mikä poikkeus heitetään testistä?

Käyttäminen JUnit4

Alla koodinpätkä kuvaa poikkeustestin käyttöä työskennellessään JUnit4:

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

Käyttäminen TestNG

Alla koodinpätkä kuvaa poikkeustestin käyttöä työskennellessään TestNG:

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

Timeout

Tämä ominaisuus on toteutettu sekä TestNg:ssä että JUnit4. Aikakatkaisua käytetään testin päättämiseen, joka kestää määritettyä aikaa kauemmin (millisekunteina).

Käyttäminen JUnit4

Alla koodinpätkä kuvaa aikakatkaisutestin käyttöä työskennellessäsi kanssa JUnit4:

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

Käyttäminen TestNG

Alla koodinpätkä kuvaa aikakatkaisutestin käyttöä työskennellessäsi kanssa TestNG:

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

Parametrisoitu testi

JUnit tarjoaa helpomman ja luettavamman lähestymistavan testaukseen, joka tunnetaan nimellä Parameterized Test. Molemmat TestNG ja JUnit tukee parametroitua testiä, mutta eroavat tavassa, jolla ne määrittelevät parametrin arvon. Katsotaan tämä yksitellen.

Käyttäminen JUnit4

"@RunWith"- ja "@Parameter"-merkintöjä käytetään antamaan parametriarvo yksikkötestille. Annotation @Parameters on palautettava List[] . Tämä parametri välitetään luokan rakentajalle argumenttina.

@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);
     }
}

Käyttäminen TestNG

In TestNG, XML-tiedostoa tai "@DataProvider" käytetään antamaan parametri testausta varten.

Tässä menetelmässä ilmoitettu @Parameters-merkintä tarvitsee parametrin testausta varten. Parametrina käytetyt tiedot tulevat sisään TestNGXML-määritystiedostot. Näin voimme käyttää yksittäistä kappaletta uudelleen Testitapaus eri tietojoukoilla, ja voimme saada erilaisia ​​tuloksia.

public class Test1 {

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

Katso alla olevaa xml-tiedostoa, jota käytetään yllä olevassa luokassa:

<!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>

Yhteenveto

Näimme JUnit4 ja TestNG vertailu yksityiskohdissa. Näimme myös, että molemmat ovat samanlaisia ​​paitsi parametrisoitu testi ja riippuvuustesti. Lyhyesti voidaan sanoa, että joustavuuden ja vaatimuksen perusteella voimme valita minkä tahansa niistä yksikkötestaukseen.

Tiivistä tämä viesti seuraavasti: