TestNG Vs JUnit: Apa Perbezaannya?

Isi kandungan:

Anonim

Kedua-dua Testng dan Junit adalah kerangka Pengujian yang digunakan untuk Pengujian Unit. TestNG serupa dengan JUnit. Beberapa fungsi ditambahkan ke dalamnya yang menjadikan TestNG lebih hebat daripada JUnit.

Tutorial ini difokuskan terutamanya untuk menganalisis ciri JUnit dan TestNG. Ini membantu pembangun untuk memutuskan kerangka mana yang harus digunakan untuk Ujian Unit. Mari kita analisis persamaan antara TestNG dan JUnit4 terlebih dahulu.

TestNG adalah kerangka ujian yang diilhamkan oleh JUnit dan NUnit.

Berikut adalah jadual yang menunjukkan ciri yang disokong oleh JUnit dan TestNG.

Perbandingan Ciri JUnit4 dan TestNG

Kedua-dua TestNG dan JUnit4 kelihatan serupa, kecuali satu atau dua ciri. Mari kita buat perbandingan antara keduanya untuk membuat keputusan dengan cepat, teknologi mana yang lebih baik untuk Unit Testing. Jadual di bawah menunjukkan ciri yang disokong oleh kedua-duanya:

Anotasi

JUnit dan TestNG menggunakan anotasi dan hampir semua anotasi kelihatan serupa.

TestNG menggunakan @BeforeMethod, @ AfterMethod serupa dengan @Before, @ After di JUnit4.

Kedua-dua TestNG dan Junit4 menggunakan @Test (timeout = 1000) untuk timeout. Lihat jadual di bawah untuk maklumat lebih lanjut-

SN Penerangan UjianNG JUnit 4
1 Anotasi ujian @ Ujian @ Ujian
2 Menjalankan sebelum kaedah ujian pertama dipanggil dalam kelas semasa @BeforeClass @BeforeClass
3 Dijalankan setelah semua kaedah ujian di kelas semasa @Selepas kelas @Selepas kelas
4 Dijalankan sebelum setiap kaedah ujian @Sebelumnya Kaedah @Sebelum ini
5 Dijalankan selepas setiap kaedah ujian @AfterMode @Selepas
6 anotasi untuk mengabaikan ujian @Test (aktifkan = salah) @abai
7 penjelasan untuk pengecualian @Test (dijangkaExceptions = ArithmeticException.class) @Test (dijangka = ArithmeticException.class)
8 masa tamat @Test (tamat masa = 1000) @Test (tamat masa = 1000)
9 Dijalankan sebelum semua ujian di suite @SebelumSuite n / a
10 Dilaksanakan setelah semua ujian di suite @AfterSuite n / a
11 Dijalankan sebelum ujian dijalankan @BeforeTest n / a
12 Dilaksanakan setelah ujian dijalankan @AfterTest n / a
13 Menjalankan sebelum kaedah ujian pertama dipanggil yang termasuk dalam mana-mana kumpulan ini dipanggil @Sebelumnya Kumpulan n / a
14 jalankan kaedah ujian terakhir yang tergolong dalam mana-mana kumpulan di sini @AfterGroups n / a

Ujian Suite

Suite digunakan untuk melaksanakan pelbagai ujian bersama. Suite boleh dibuat menggunakan kedua TestNG dan JUnit4. Walau bagaimanapun, suite lebih kuat dalam TestNG kerana menggunakan kaedah yang sangat berbeza untuk pelaksanaan ujian. Mari memahaminya menggunakan coretan kod seperti yang diberikan di bawah:

Menggunakan JUnit4

Kelas di bawah menerangkan penggunaan suite semasa bekerja dengan JUnit4:

pakej guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})JunitTest kelas awam {// Kelas ini tetap kosong, hanya digunakan sebagai pemegang untuk anotasi di atas}

Menggunakan TestNG

TestNG menggunakan xml untuk menggabungkan semua ujian di satu tempat. Xml di bawah menerangkan penggunaan suite semasa bekerja dengan TestNG:

Abaikan Ujian

Dengan menggunakan kedua-duanya, kita boleh melangkau ujian. Mari kita lihat menggunakan contoh kod seperti yang diberikan di bawah:

Menggunakan JUnit4

Coretan kod di bawah menerangkan penggunaan anotasi @ignore semasa bekerja dengan JUnit4:

@Abaikaedah kekosongan awam1 (){System.out.println ("Menggunakan @Ignore, pelaksanaan ini diabaikan");}

Menggunakan TestNG

Coretan kod di bawah menerangkan penggunaan anotasi @Test (enabled = false) semasa bekerja dengan TestNG:

@Test (diaktifkan = salah)kesahan awam TestWithException (){System.out.println ("Kaedah harus diabaikan kerana belum siap");}

Ujian Pengecualian

Ujian pengecualian boleh didapati di TestNG dan JUnit4. Ini digunakan untuk memeriksa, pengecualian mana yang dilemparkan dari ujian?

Menggunakan JUnit4

Coretan kod di bawah menerangkan penggunaan ujian pengecualian semasa bekerja dengan JUnit4:

@Test (dijangka = ArithmeticException.class)pembaharuan tidak sah awamByZero (){Int i = 1/0;}

Menggunakan TestNG

Coretan kod di bawah menerangkan penggunaan ujian pengecualian semasa bekerja dengan TestNG:

@Test (dijangkaExceptions = ArithmeticException.class)pembaharuan tidak sah awamByZero (){Int i = 1/0;}

Masa tamat

Ciri ini dilaksanakan baik dalam TestNg dan JUnit4. Timeout digunakan untuk menamatkan ujian yang memakan masa lebih lama daripada waktu yang ditentukan (dalam milisaat).

Menggunakan JUnit4

Coretan kod di bawah menerangkan penggunaan ujian tamat masa semasa bekerja dengan JUnit4:

@Test (tamat masa = 1000)kaedah kekosongan awam1 (){sementara (benar);}

Menggunakan TestNG

Coretan kod di bawah menerangkan penggunaan ujian tamat masa semasa bekerja dengan TestNG:

@ Ujian (timeOut = 1000)kaedah kekosongan awam1 (){sementara (benar);}

Ujian Parameter

JUnit memberikan pendekatan yang lebih mudah dan mudah dibaca untuk ujian yang dikenali sebagai Parameterized test. Kedua-dua TestNG dan JUnit menyokong ujian parameter tetapi berbeza dalam cara mereka menentukan nilai parameter. Mari lihat ini satu persatu.

Menggunakan JUnit4

Anotasi "@RunWith" dan "@Parameter" digunakan untuk memberikan nilai parameter untuk ujian unit. Anotasi @Parameter harus mengembalikan Senarai []. Parameter ini akan diteruskan ke pembina kelas sebagai argumen.

@RunWith (nilai = Parameterized.class)JunitTest kelas awam {nombor privateint;JunitTest6 awam (nombor int){ini.nombor = nombor;}@ParameterPengumpulan statik awam  data (){Objek [] [] data = Objek baru [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (data);}@ Ujianparameter void awamTest (){System.out.println ("Parameterized Number is: + number);}}

Menggunakan TestNG

Dalam TestNG, fail XML atau "@DataProvider" digunakan untuk menyediakan parameter untuk pengujian.

Di sini anotasi @ Parameter yang dinyatakan dalam kaedah ini, memerlukan parameter untuk ujian. Data yang digunakan sebagai parameter akan disediakan dalam file konfigurasi XML TestNG. Dengan melakukan ini, kita dapat menggunakan semula Uji Kes tunggal dengan set data yang berbeza, dan kita dapat memperoleh hasil yang berbeza.

Ujian kelas awam1 {@ Ujian@Parameter (nilai = "nombor")parameter void awam Ujian (nombor int){System.out.println ("Parameterized Number is: + number);}}

Lihat fail xml di bawah untuk digunakan untuk kelas di atas:


Ringkasan:

Kami melihat perbandingan JUnit4 dan TestNG secara terperinci. Kami juga melihat kedua-duanya serupa kecuali ujian parameter dan ujian ketergantungan. Ringkasnya kita dapat mengatakan, berdasarkan fleksibiliti dan keperluan kita dapat memilih salah satu dari mereka untuk Pengujian Unit.