TestNG Vs JUnit: Apa Perbedaannya?

Baik Testng dan Junit adalah kerangka kerja Pengujian yang digunakan untuk Pengujian Unit. TestNG mirip dengan JUnit. Beberapa lebih banyak fungsi ditambahkan ke dalamnya yang membuat TestNG lebih bertenaga daripada JUnit.

Tutorial ini terutama difokuskan untuk menganalisis fitur JUnit dan TestNG. Ini membantu pengembang untuk memutuskan kerangka kerja mana yang harus digunakan untuk Pengujian Unit. Mari menganalisis kesamaan antara TestNG dan JUnit4 terlebih dahulu.

TestNG adalah framework pengujian yang terinspirasi oleh JUnit dan NUnit.

Berikut adalah tabel yang menunjukkan fitur-fitur yang didukung oleh JUnit dan TestNG.

Perbandingan Fitur JUnit4 dan TestNG

Baik TestNG dan JUnit4 terlihat serupa, kecuali satu atau dua fitur. Mari kita bandingkan keduanya untuk segera memutuskan, teknologi mana yang lebih disukai untuk Pengujian Unit. Tabel di bawah menyoroti fitur yang didukung oleh keduanya:

Anotasi

Baik JUnit dan TestNG menggunakan anotasi dan hampir semua anotasi terlihat serupa.

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

Baik TestNG dan Junit4 menggunakan @Test (timeout = 1000) untuk timeout. Lihat tabel di bawah untuk lebih jelasnya-

SN Deskripsi TestNG JUnit 4
1 Uji anotasi @Uji @Uji
2 Dieksekusi sebelum metode pengujian pertama dipanggil di kelas saat ini @Sebelum kelas @Sebelum kelas
3 Dijalankan setelah semua metode pengujian di kelas saat ini @Setelah Kelas @Setelah Kelas
4 Jalankan sebelum setiap metode pengujian @Tokopedia @Sebelum
5 Dilakukan setelah setiap metode pengujian @Afterhod @Setelah
6 anotasi untuk mengabaikan tes @Test (aktifkan = salah) @mengabaikan
7 penjelasan untuk pengecualian @Test (expectedExceptions = ArithmeticException.class) @Test (diharapkan = ArithmeticException.class)
8 waktu habis @Test (waktu tunggu = 1000) @Test (waktu tunggu = 1000)
9 Jalankan sebelum semua pengujian di suite @Tokopedia t / a
10 Eksekusi setelah semua pengujian di suite @Setelah t / a
11 Jalankan sebelum pengujian dijalankan @Sebelumnya t / a
12 Dijalankan setelah pengujian dijalankan @Setelah t / a
13 Dieksekusi sebelum metode pengujian pertama dipanggil yang milik salah satu grup ini dipanggil @Tokopedia t / a
14 dijalankan setelah metode pengujian terakhir yang termasuk dalam salah satu grup di sini @Afterroup t / a

Uji Suite

Suite digunakan untuk menjalankan beberapa pengujian secara bersamaan. Suite dapat dibuat menggunakan TestNG dan JUnit4. Namun, suite lebih bertenaga di TestNG karena menggunakan metode yang sangat berbeda untuk pelaksanaan pengujian. Mari kita pahami dengan menggunakan potongan kode seperti yang diberikan di bawah ini:

Menggunakan JUnit4

Kelas di bawah ini menjelaskan penggunaan suite saat bekerja dengan JUnit4:

paket guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@Jalan (Suite.png.webp)@ Suite.Suite ({SuiteTest1.class,SuiteTest2.class,})kelas publik JunitTest {// Kelas ini tetap kosong, hanya digunakan sebagai pemegang anotasi di atas}

Menggunakan TestNG

TestNG menggunakan xml untuk menggabungkan semua pengujian di satu tempat. Di bawah xml menjelaskan penggunaan rangkaian saat bekerja dengan TestNG:

Abaikan Tes

Menggunakan keduanya kita bisa melewati tes. Mari kita lihat menggunakan contoh kode seperti yang diberikan di bawah ini:

Menggunakan JUnit4

Cuplikan kode di bawah ini menjelaskan penggunaan anotasi @ignore saat bekerja dengan JUnit4:

@Mengabaikanpublic void method1 (){System.out.println ("Menggunakan @Ignore, eksekusi ini diabaikan");}

Menggunakan TestNG

Cuplikan kode di bawah ini menjelaskan penggunaan anotasi @Test (enabled = false) saat bekerja dengan TestNG:

@Test (diaktifkan = salah)public void TestWithException (){System.out.println ("Metode harus diabaikan karena belum siap");}

Tes Pengecualian

Pengujian pengecualian tersedia di TestNG dan JUnit4. Ini digunakan untuk memeriksa, pengecualian mana yang dikeluarkan dari pengujian?

Menggunakan JUnit4

Cuplikan kode di bawah ini menjelaskan penggunaan uji pengecualian saat bekerja dengan JUnit4:

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

Menggunakan TestNG

Cuplikan kode di bawah ini menjelaskan penggunaan uji pengecualian saat bekerja dengan TestNG:

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

Waktu habis

Fitur ini diterapkan di TestNg dan JUnit4. Timeout digunakan untuk menghentikan pengujian yang membutuhkan waktu lebih lama dari waktu yang ditentukan (dalam milidetik).

Menggunakan JUnit4

Cuplikan kode di bawah ini menjelaskan penggunaan uji batas waktu saat bekerja dengan JUnit4:

@Test (waktu tunggu = 1000)public void method1 (){sementara (benar);}

Menggunakan TestNG

Cuplikan kode di bawah ini menjelaskan penggunaan uji batas waktu saat bekerja dengan TestNG:

@Test (timeOut = 1000)public void method1 (){sementara (benar);}

Uji Parameter

JUnit menyediakan pendekatan pengujian yang lebih mudah dan dapat dibaca yang dikenal sebagai pengujian Parameter. Baik TestNG dan JUnit mendukung pengujian berparameter tetapi berbeda dalam cara mereka menentukan nilai parameter. Coba lihat ini satu per satu.

Menggunakan JUnit4

Anotasi "@RunWith" dan "@Parameter" digunakan untuk memberikan nilai parameter untuk pengujian unit. Anotasi @Parameters harus mengembalikan List []. Parameter ini akan diteruskan ke konstruktor kelas sebagai argumen.

@RunWith (value = Parameterized.class)kelas publik JunitTest {nomor privateint;publik JunitTest6 (nomor int){this.number = nomor;}@ParetersKoleksi statis publik  data (){Objek [] [] data = Objek baru [] [] {{1}, {2}, {3}, {4}};returnArrays.asList (data);}@Ujipublic void parameterTest (){System.out.println ("Parameterized Number is: + number);}}

Menggunakan TestNG

Di TestNG, file XML atau "@DataProvider" digunakan untuk memberikan parameter pengujian.

Di sini @Parameters anotasi dideklarasikan dalam metode, membutuhkan parameter untuk pengujian. Data yang digunakan sebagai parameter akan disediakan dalam file konfigurasi XML TestNG. Dengan melakukan ini, kita dapat menggunakan kembali satu Kasus Uji dengan kumpulan data yang berbeda, dan kita bisa mendapatkan hasil yang berbeda.

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

Lihat di bawah file xml yang akan digunakan untuk kelas di atas:


Ringkasan:

Kami melihat perbandingan JUnit4 dan TestNG secara detail. Kami juga melihat keduanya serupa kecuali uji berparameter dan uji ketergantungan. Singkatnya kita dapat mengatakan, berdasarkan fleksibilitas dan persyaratan kita dapat memilih salah satunya untuk Pengujian Unit.

Artikel yang menarik...