TestNG vs JUnit: Koja je razlika?

Sadržaj:

Anonim

I Testng i Junit su okvir za testiranje koji se koristi za jedinično testiranje. TestNG je sličan JUnit-u. Dodano mu je još nekoliko funkcionalnosti koje čine TestNG moćnijim od JUnit-a.

Ovaj je vodič uglavnom usmjeren na analizu značajki JUnit-a i TestNG-a. Pomaže programerima da odluče koji će se okvir koristiti za jedinstveno testiranje. Prvo analizirajmo sličnosti između TestNG i JUnit4.

TestNG je testni okvir nadahnut JUnit-om i NUnit-om.

Evo tablice koja prikazuje značajke podržane od strane JUnit i TestNG.

Usporedba značajki JUnit4 i TestNG

I TestNG i JUnit4 izgledaju slično, osim jedne ili dvije značajke. Idemo usporediti to dvoje kako bismo brzo odlučili koja je tehnologija povoljnija za jedinstveno testiranje. Ispod tablice istaknute su značajke koje podržavaju obje:

Bilješke

I JUnit i TestNG koriste bilješke i gotovo sve bilješke izgledaju slično.

TestNG koristi @BeforeMethod, @ AfterMethod slično @Before, @ After u JUnit4.

I TestNG i Junit4 koriste @Test (timeout = 1000) za timeout. Provjerite donju tablicu za više detalja-

S N Opis TestNG JUNIT 4
1 Probna bilješka @Test @Test
2 Izvršava se prije nego što se u trenutnoj klasi pozove prva metoda ispitivanja @BeforeClass @BeforeClass
3 Izvršava se nakon svih metoda ispitivanja u trenutnoj klasi @Nakon nastave @Nakon nastave
4 Izvršava se prije svake ispitne metode @BeforeMethod @Prije
5 Izvršava se nakon svake metode ispitivanja @AfterMethod @Nakon
6 napomena za zanemarivanje testa @Test (enable = false) @zanemariti
7 napomena za iznimku @Test (očekivaniExceptions = ArithmeticException.class) @Test (očekuje se = ArithmeticException.class)
8 pauza @Test (timeout = 1000) @Test (timeout = 1000)
9 Izvršava se prije svih testova u paketu @BeforeSuite n / a
10 Izvršava se nakon svih testova u paketu @AfterSuite n / a
11 Izvršava se prije pokretanja testa @BeforeTest n / a
12 Izvršava se nakon probnog rada @AfterTest n / a
13 Izvršava se prije pozivanja prve metode ispitivanja koja pripada bilo kojoj od ovih grupa @BeforeGroups n / a
14 pokrenuti nakon posljednje ispitne metode koja pripada bilo kojoj od ovdje navedenih skupina @AfterGroups n / a

Suite test

Suite se koriste za zajedničko izvršavanje više testova. Suite se mogu stvoriti pomoću TestNG i JUnit4. Međutim, apartmani su moćniji u TestNG-u jer koristi vrlo različite metode za izvršavanje testova. Shvatimo to pomoću isječka koda kako je dano u nastavku:

Korištenje JUnit4

Ispod klasa opisuje upotrebu paketa tijekom rada s JUnit4:

paket guru99.junit;import org.junit.runner.RunWith;uvoz org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})javna klasa JunitTest {// Ova klasa ostaje prazna, koristi se samo kao držač za gornje napomene}

Korištenje TestNG-a

TestNG koristi xml za grupiranje svih testova na jednom mjestu. Ispod xml opisuje upotrebu paketa tijekom rada s TestNG:

Zanemari test

Korištenjem oba možemo preskočiti test. Pogledajmo ga pomoću primjera koda kako je dano dolje:

Korištenje JUnit4

Ispod isječka koda opisuje upotrebu oznake @ignore tijekom rada s JUnit4:

@Zanemaritimetoda javne praznine1 (){System.out.println ("Korištenje @Ignore, ovo izvršavanje se zanemaruje");}

Korištenje TestNG-a

Ispod isječka koda opisuje upotrebu @Test (enabled = false) bilješke tijekom rada s TestNG:

@Test (omogućeno = netačno)javna praznina TestWithException (){System.out.println ("Metodu treba zanemariti jer još nije spremna");}

Test iznimke

Testiranje iznimki dostupno je u TestNG i JUnit4. Koristi se za provjeru, koja je iznimka izbačena iz testa?

Korištenje JUnit4

Ispod isječka koda opisuje upotrebu testa iznimke tijekom rada s JUnit4:

@Test (očekuje se = ArithmeticException.class)javna praznina divideByZero (){Int i = 1/0;}

Korištenje TestNG-a

Ispod isječka koda opisuje upotrebu testa iznimke tijekom rada s TestNG:

@Test (očekivaniExceptions = ArithmeticException.class)javna praznina divideByZero (){Int i = 1/0;}

Pauza

Ova je značajka implementirana u TestNg i JUnit4.Timeout se koristi za prekid testa koji traje duže od određenog vremena (u milisekundama).

Korištenje JUnit4

Ispod isječka koda opisuje upotrebu timeout testa tijekom rada s JUnit4:

@Test (timeout = 1000)metoda javne praznine1 (){dok (istina);}

Korištenje TestNG-a

Ispod isječka koda opisuje upotrebu timeout testa tijekom rada s TestNG:

@Test (timeOut = 1000)metoda javne praznine1 (){dok (istina);}

Parametarsko ispitivanje

JUnit pruža lakši i čitljiviji pristup ispitivanju poznat kao Parametarski test. I TestNG i JUnit podržavaju parametrizirano testiranje, ali se razlikuju u načinu na koji definiraju vrijednost parametra. Neka se vidi jedan po jedan.

Korištenje JUnit4

Bilješke "@RunWith" i "@Parameter" koriste se za pružanje vrijednosti parametra za jedinični test. Napomena @Parameters mora vratiti List []. Ovaj će parametar biti proslijeđen u konstruktor klase kao argument.

@RunWith (vrijednost = parametrizirana.klasa)javna klasa JunitTest {privateint broj;javni JunitTest6 (int broj){this.number = broj;}@Parametersjavna statička zbirka podataka  (){Podaci o objektu [] [] = novi objekt [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (podaci);}@Testparametar javne praznineTest (){System.out.println ("Parametarski broj je: + broj);}}

Korištenje TestNG-a

U TestNG-u XML datoteka ili "@DataProvider" koristi se za pružanje parametra za testiranje.

Ovdje bilješka @Parameters deklarirana u metodi treba parametar za testiranje. Podaci korišteni kao parametar pružit će se u XML konfiguracijskim datotekama TestNG-a. Na taj način možemo ponovno koristiti jedan testni slučaj s različitim skupovima podataka i možemo dobiti različite rezultate.

javni razred Test1 {@Test@Parametri (vrijednost = "broj")parametar javne praznine (int broj){System.out.println ("Parametarski broj je: + broj);}}

Pogledajte dolje xml datoteku koja će se koristiti za gornju klasu:

Sažetak :

Detaljno smo vidjeli usporedbu JUnit4 i TestNG. Također smo vidjeli kako su oba slična, osim parametriziranog testa i testa ovisnosti. Ukratko, možemo reći, na temelju fleksibilnosti i zahtjeva, možemo odabrati bilo koji od njih za jedinstveno testiranje.