JUnit adalah framework Pengujian unit paling populer di Java. Ini secara eksplisit direkomendasikan untuk Pengujian Unit. JUnit tidak memerlukan server untuk menguji aplikasi web, yang membuat proses pengujian menjadi cepat.
Kerangka kerja JUnit juga memungkinkan pembuatan kasus uji dan data uji dengan cepat dan mudah. The org.Junit paket terdiri dari banyak antarmuka dan kelas untuk JUnit Pengujian seperti Test, Assert, Setelah, Sebelum, dll
Apa itu Test fixture
Sebelum kita memahami apa itu test fixture, mari pelajari kode di bawah ini
Kode ini dirancang untuk menjalankan dua kasus uji pada file sederhana.
public class OutputFileTest {keluaran File pribadi;output = File baru (…);output.delete ();public void testFile1 () {// Kode untuk memverifikasi Kasus Uji 1}output.delete ();output = File baru (…);public void testFile2 () {// Kode untuk memverifikasi Kasus Uji 2}output.delete ();}
Beberapa masalah di sini
- Kode tidak dapat dibaca
- Kode tersebut tidak mudah dipelihara.
- Jika rangkaian pengujian kompleks, kode dapat berisi masalah logis.
Bandingkan kode yang sama menggunakan JUnit
kelas publik OutputFileTest{keluaran File pribadi;@Before public void createutput (){output = File baru (…);}@Setelah public void deleteutput (){output.delete ();}@Test public vale test (){// kode untuk tujuan kasus uji}@Test public vale test2 (){// kode untuk tujuan kasus uji}}
Kode jauh lebih mudah dibaca dan dipelihara. Struktur kode di atas adalah perlengkapan Tes.
Perlengkapan uji adalah konteks tempat Uji Kasus dijalankan. Biasanya, perlengkapan uji meliputi:
- Objek atau sumber daya yang tersedia untuk kasus uji apa pun.
- Aktivitas yang diperlukan untuk membuat objek / sumber daya ini tersedia.
- Aktivitas ini
- alokasi ( penyiapan )
- pembatalan alokasi ( pembongkaran ).
Setup dan Teardown
- Biasanya, ada beberapa tugas berulang yang harus dilakukan sebelum setiap kasus uji. Contoh: buat koneksi database.
- Demikian juga, di akhir setiap kasus pengujian, mungkin ada beberapa tugas yang berulang. Contoh: untuk membersihkan setelah eksekusi uji selesai.
- JUnit menyediakan anotasi yang membantu dalam penyiapan dan pembongkaran. Ini memastikan bahwa sumber daya dilepaskan, dan sistem pengujian dalam keadaan siap untuk kasus pengujian berikutnya.
Anotasi ini dibahas di bawah-
Mempersiapkan
Anotasi @Before digunakan pada metode yang berisi kode Java untuk dijalankan sebelum setiap kasus pengujian. yaitu berjalan sebelum setiap eksekusi uji.
Teardown (terlepas dari putusannya)
@Setelah anotasi digunakan pada metode yang berisi kode java untuk dijalankan setelah setiap kasus uji. Metode ini akan berjalan meskipun ada pengecualian yang dilemparkan dalam kasus pengujian atau dalam kasus kegagalan pernyataan.
catatan:
- Itu diperbolehkan untuk memiliki sejumlah penjelasan yang tercantum di atas.
- Semua metode yang dianotasi dengan @Before akan berjalan sebelum setiap kasus pengujian, tetapi mereka dapat berjalan dalam urutan apa pun.
- Anda dapat mewarisi metode @Before dan @After dari kelas super, Eksekusi adalah sebagai berikut: Ini adalah proses eksekusi standar di JUnit.
- Jalankan metode @Before di superclass
- Jalankan metode @Before di kelas ini
- Jalankan metode @Test di kelas ini
- Jalankan metode @After di kelas ini
- Jalankan metode @After di superclass
Contoh: Membuat kelas dengan file sebagai perlengkapan tes
kelas publik OutputFileTest{keluaran File pribadi;@Before public void createutput (){output = File baru (…);}@Setelah public void deleteutput (){output.delete ();}@Test public vale test (){// kode untuk tujuan kasus uji}@Test public vale test2 (){// kode untuk tujuan kasus uji}}
Dalam contoh di atas, rangkaian eksekusi akan menjadi sebagai berikut-
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Asumsi: testFile1 () berjalan sebelum testFile2 () - yang tidak dijamin.
Penyiapan hanya sekali
- Dimungkinkan untuk menjalankan metode hanya sekali untuk seluruh kelas pengujian sebelum pengujian apa pun dijalankan, dan sebelum metode @Before apa pun .
- "Once only setup" berguna untuk memulai server, membuka komunikasi, dll. Menghabiskan waktu untuk menutup dan membuka kembali sumber daya untuk setiap pengujian.
- Ini bisa dilakukan dengan menggunakan anotasi @BeforeClass
@Beforelass public static void Methodame () {// kode penyiapan kelas di sini}
Runtuh hanya sekali
- Mirip dengan penyiapan sekali saja, metode pembersihan hanya sekali juga tersedia. Ini berjalan setelah semua metode kasus uji dan anotasi @After dijalankan.
- Ini berguna untuk menghentikan server, menutup tautan komunikasi, dll.
- Ini dapat dilakukan dengan menggunakan anotasi @AfterClass
@Afterlass public static v2 Methodame (){// kode pembersihan kelas di sini}
JUnit Test Suites
Jika kita ingin menjalankan beberapa tes dalam urutan yang ditentukan, itu bisa dilakukan dengan menggabungkan semua tes di satu tempat. Tempat ini disebut sebagai test suites. Detail lebih lanjut tentang cara menjalankan rangkaian pengujian dan cara penggunaannya di JUnit akan dibahas dalam tutorial ini.
Pelari Uji Sampah
JUnit menyediakan alat untuk mengeksekusi kasus uji Anda.
- Kelas JUnitCore digunakan untuk menjalankan pengujian ini.
- Metode yang disebut runClasses yang disediakan oleh org.junit.runner.JUnitCore, digunakan untuk menjalankan satu atau beberapa kelas pengujian.
- Jenis pengembalian metode ini adalah objek Hasil ( org.junit.runner.Result ), yang digunakan untuk mengakses informasi tentang pengujian. Lihat contoh kode berikut untuk lebih jelasnya.
Public class Test {public static void main (String [] args) {Hasil hasil = JUnitCore.runClasses (CreateAndSetName.class);untuk (Kegagalan kegagalan: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}
Dalam kode di atas, objek "hasil" diproses untuk mendapatkan kegagalan dan hasil yang berhasil dari kasus uji yang kami jalankan.
Program JUnit pertama
Pengetahuan yang adil tentang SDLC, pemrograman java, dan dasar-dasar proses pengujian perangkat lunak membantu dalam memahami program JUnit.
Mari kita pahami Pengujian Unit menggunakan contoh langsung. Kita perlu membuat kelas pengujian dengan metode pengujian yang dianotasi dengan @Test seperti yang diberikan di bawah ini:
MyFirstClassTest.java
paket guru99.JUnit;import static org.JUnit.Assert. *;import org.JUnit.Test;public class MyFirstClassTest {@Ujipublic void myFirstMethod () {String str = "JUnit bekerja dengan baik";assertEquals ("JUnit bekerja dengan baik", str);}}
TestRunner.java
Untuk menjalankan metode pengujian kami (di atas), kami perlu membuat runner pengujian. Dalam runner pengujian kita harus menambahkan kelas pengujian sebagai parameter dalam metode runclasses () JUnitCore. Ini akan mengembalikan hasil tes, berdasarkan apakah tes itu lulus atau gagal.
Untuk lebih jelasnya lihat kode di bawah ini:
paket guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;public class TestRunner {public static void main (String [] args) {Hasil hasil = JUnitCore.runClasses (MyFirstClassTest.class);untuk (Kegagalan kegagalan: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Hasil ==" + result.wasSuccessful ());}}
Keluaran
Setelah TestRunner.java menjalankan metode pengujian kami, kami mendapatkan keluaran sebagai gagal atau lulus. Silakan temukan penjelasan output di bawah ini:
- Dalam contoh ini, setelah menjalankan MyFirstClassTest.java , pengujian dilewatkan dan hasilnya berwarna hijau.
- Jika itu akan gagal, itu seharusnya menunjukkan hasil sebagai Merah dan kegagalan dapat diamati di jejak kegagalan. Lihat di bawah JUnit gui:
Ringkasan :
- JUnit adalah kerangka kerja yang mendukung beberapa anotasi untuk mengidentifikasi metode yang berisi pengujian.
- JUnit menyediakan anotasi yang disebut @Test, yang memberi tahu JUnit bahwa metode public void yang digunakannya dapat dijalankan sebagai kasus uji.
- Perlengkapan uji adalah konteks tempat uji kasus dijalankan
- Untuk menjalankan beberapa pengujian dalam urutan tertentu, dapat dilakukan dengan menggabungkan semua pengujian di satu tempat. Tempat ini disebut sebagai test suites.
- JUnit menyediakan alat untuk menjalankan pengujian tempat kami dapat menjalankan kasus pengujian kami yang disebut sebagai Test Runner.