JUnit Uji Kasus @Sebelum @BeforeClass Anotasi
โก Ringkasan Cerdas
JUnit adalah kerangka kerja pengujian unit yang paling banyak digunakan untuk Java, dan anotasi test fixture-nya mengontrol secara tepat apa yang terjadi sebelum dan sesudah setiap metode pengujian dijalankan di dalam kelas pengujian.
JUnit adalah unit yang paling populer pengujian kerangka di Java. Ini secara eksplisit direkomendasikan untuk Pengujian Unit. JUnit Tidak memerlukan server untuk menguji aplikasi web, sehingga proses pengujian menjadi cepat.
The JUnit Kerangka kerja ini juga memungkinkan pembuatan kasus uji dan data uji dengan cepat dan mudah. Itu org.junit Paket ini terdiri dari banyak antarmuka dan kelas untuk JUnit Pengujian, seperti Uji, Tegaskan, Setelah, dan Sebelum. Cakupannya lebih luas. JUnit Keluarga dibangun di atas fondasi yang sama ini.
Apa itu Test Fixture?
Sebelum kita memahami apa itu test fixture, mari kita pelajari kode di bawah ini.
Kode ini dirancang untuk mengeksekusi dua kasus uji pada file sederhana.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Beberapa masalah di sini
- Kode tersebut tidak dapat dibaca.
- Kode ini tidak mudah untuk dipelihara.
- Jika rangkaian pengujiannya rumit, kodenya mungkin mengandung masalah logika.
Bandingkan kode yang sama menggunakan JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Kode tersebut jauh lebih mudah dibaca dan dipelihara. Struktur kode di atas adalah sebuah perlengkapan uji.
Perlengkapan tes adalah konteks di mana a JUnit Uji Kasus berjalan. Biasanya, perlengkapan tes meliputi:
- Objek atau sumber daya yang tersedia untuk kasus uji apa pun.
- Kegiatan-kegiatan yang diperlukan untuk menyediakan objek dan sumber daya tersebut.
- Kegiatan-kegiatan tersebut adalah
- alokasi (penyiapan)
- de-alokasi (menangis).
Penyiapan dan Pembongkaran
Jadwal pertandingan penting karena... JUnit menjalankan hook ini di sekitar setiap pengujian.
- Biasanya, ada beberapa tugas berulang yang harus dilakukan sebelum setiap kasus uji. Contoh: membuat koneksi database.
- Demikian pula, di akhir setiap kasus uji, mungkin ada beberapa tugas yang diulang. Contoh: untuk membersihkan setelah eksekusi tes selesai.
- JUnit menyediakan anotasi yang membantu dalam pengaturan dan pembersihan. Ini memastikan bahwa sumber daya dilepaskan, dan sistem pengujian berada dalam keadaan siap untuk kasus uji berikutnya.
Ini JUnit Anotasi dibahas di bawah ini.
Pengaturan
@Sebelum anotasi di JUnit digunakan pada metode yang mengandung Java Kode yang dijalankan sebelum setiap kasus uji, yaitu, dijalankan sebelum setiap eksekusi pengujian.
Pembongkaran (terlepas dari putusannya)
@Setelah anotasi digunakan pada metode yang berisi Java Kode yang akan dijalankan setelah setiap kasus uji. Metode ini akan tetap berjalan meskipun terjadi pengecualian dalam kasus uji atau jika terjadi kegagalan pernyataan.
Catatan:
- Diperbolehkan memiliki sejumlah anotasi yang tercantum di atas.
- Semua metode dijelaskan dengan @Sebelum in JUnit akan dijalankan sebelum setiap kasus uji, tetapi dapat dijalankan dalam urutan apa pun.
- Anda dapat mewarisi metode @Before dan @After dari kelas induk. Eksekusinya adalah sebagai berikut, dan ini adalah proses eksekusi standar di JUnit.
- Jalankan JUnit @Sebelum metode 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
JUnit Catatan tahun 5: anotasi ini adalah JUnit 4 (org.junit). JUnit 5 mengganti nama mereka di org.junit.jupiter.api, Dan JUnit Kode 4 di bawah ini masih berjalan di bawah mesin klasik.
| JUnit 4 anotasi | JUnit 5 (Jupiter) setara | Berjalan |
|---|---|---|
| @Sebelum | @SebelumSetiap | Sebelum setiap metode pengujian |
| @Setelah | @SetelahSetiap | Setelah setiap metode pengujian |
| @Sebelum kelas | @SebelumSemua | Sekali di depan seluruh kelas |
| @Afterlass | @SetelahSemua | Setelah seluruh kelas |
| @Mengabaikan | @Dengan disabilitas | Melewati tes beranotasi |
Contoh: Membuat kelas dengan file sebagai fixture pengujian.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Pada contoh di atas, rantai eksekusinya akan sebagai berikut. Diagramnya tracsatu siklus buat-uji-hapus per metode pengujian.
- buatOutputFile()
- file uji1()
- hapusOutputFile()
- buatOutputFile()
- file uji2()
- hapusOutputFile()
Anggapan:
testFile1() dijalankan sebelum testFile2(), yang tidak dijamin.
Penyiapan hanya sekali
- Dimungkinkan untuk menjalankan suatu metode hanya sekali untuk seluruh kelas pengujian sebelum pengujian apa pun dijalankan, dan sebelum pengujian apa pun @Sebelum metode.
- โPengaturan sekali sajaโ berguna untuk memulai server, membuka komunikasi, dan pekerjaan serupa. Namun, menutup dan membuka kembali sumber daya untuk setiap pengujian memakan waktu.
- Ini dapat dilakukan dengan menggunakan anotasi @Sebelum kelas in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Metodenya haruslah kekosongan statis publik, Karena JUnit memanggilnya sebelum ada instance pengujian.
Hanya sekali saja dirobohkan
- Mirip dengan pengaturan sekali saja, metode pembersihan sekali saja juga tersedia. Metode ini dijalankan setelah semua metode kasus uji dan @Setelah anotasi telah dijalankan.
- Ini berguna untuk berhentiping server dan menutup jalur komunikasi.
- Ini dapat dilakukan dengan menggunakan @Afterlass anotasi.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Suite Tes
Dengan adanya pengaturan yang sudah ditetapkan, kelas pengujian yang terkait biasanya dikelompokkan dan diluncurkan bersamaan.
Jika kita ingin menjalankan beberapa pengujian dalam urutan tertentu, hal itu dapat dilakukan dengan menggabungkan semua pengujian di satu tempat. Tempat ini disebut rangkaian pengujian (test suite). Detail lebih lanjut tentang cara menjalankan rangkaian pengujian dan bagaimana penggunaannya akan dijelaskan lebih lanjut di [tautan]. JUnit tercakup dalam hal ini tutorial.
JUnit Pelari Uji
JUnit menyediakan alat untuk mengeksekusi kasus pengujian Anda.
- JUnitCore kelas digunakan untuk menjalankan tes ini.
- Sebuah metode disebut menjalankanKelas disediakan oleh org.junit.runner.JUnitCore digunakan untuk menjalankan satu atau beberapa kelas tes.
- Jenis pengembalian metode ini adalah Hasil objek (org.junit.runner.Hasil), yang digunakan untuk mengakses informasi tentang pengujian. Lihat contoh kode berikut untuk kejelasan lebih lanjut.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Pada kode di atas, objek "result" diproses untuk mendapatkan hasil kegagalan dan keberhasilan dari kasus uji yang kita jalankan. Fungsi pembantu seperti... menegaskanSama Mengangkat kegagalan-kegagalan tersebut, sementara @Mengabaikan Melewatkan ujian.
JUnit Catatan tahun 5: JUnitCore adalah JUnit Pelari 4. JUnit 5 menggantinya dengan JUnit Platform peluncur API, yang biasanya dijalankan oleh IDE, Gradle atau Maven Surefire.
Pertama JUnit program
Pengetahuan yang cukup tentang SDLC, Java pemrograman, dan dasar-dasarnya pengujian perangkat lunak Proses ini membantu dalam memahami JUnit program, serta mengetahui bagaimana tes unit berbeda dari tes integrasi.
Mari kita pahami pengujian unit menggunakan contoh nyata. Kita perlu membuat kelas pengujian dengan metode pengujian yang diberi anotasi dengan @Uji seperti yang diberikan di bawah ini:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Untuk menjalankan metode pengujian kita (di atas), kita perlu membuat test runner. Di dalam test runner, kita harus menambahkan kelas pengujian sebagai parameter. JUnitMetode runClasses() dari Core. Metode ini akan mengembalikan hasil pengujian, berdasarkan apakah pengujian berhasil atau gagal.
Untuk detail selengkapnya, lihat kode di bawah ini:
package 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) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Keluaran
Sekali TestRunner.java Saat metode pengujian kami dijalankan, kami mendapatkan output berupa gagal atau berhasil. Silakan lihat penjelasan output di bawah ini:
- Dalam contoh ini, setelah mengeksekusi MyFirstClassTest.java, tes berhasil dilewati dan hasilnya berwarna hijau.
- Jika gagal, hasilnya akan ditampilkan berwarna merah, dan kegagalan tersebut dapat diamati pada indikator kegagalan. trace. Lihat JUnit GUI di bawah ini:


