JUnit Tutorial Anotasi dengan Contoh: Apa itu @Test dan @After
Apa itu JUnit Anotasi?
JUnit Penjelasan adalah bentuk khusus dari meta-data sintaksis yang dapat ditambahkan Java kode sumber untuk keterbacaan dan struktur kode yang lebih baik. Variabel, parameter, paket, metode, dan kelas dapat diberi anotasi. Anotasi diperkenalkan di Junit4, yang membuat Java kode lebih mudah dibaca dan sederhana. Inilah perbedaan besar antara Junit3 dan Junit4, yaitu Junit4 berbasis anotasi.
Dengan pengetahuan tentang anotasi di Junit5, seseorang dapat dengan mudah mempelajari dan menerapkan JUnit tes. Di bawah ini adalah yang penting dan sering digunakan JUnit daftar anotasi:
S.No. | Penjelasan | Description |
---|---|---|
1. | @Uji | Anotasi ini merupakan pengganti org.junit.TestCase yang menunjukkan bahwa metode public void yang dilampirkan dapat dijalankan sebagai Test Case. |
2. | @Sebelum | Anotasi ini digunakan jika Anda ingin menjalankan beberapa pernyataan seperti prasyarat sebelum setiap kasus uji. |
3. | @Sebelum kelas | Anotasi ini digunakan jika Anda ingin mengeksekusi beberapa pernyataan sebelum semua kasus pengujian, misalnya koneksi pengujian harus dijalankan sebelum semua kasus pengujian. |
4. | @Setelah | Anotasi ini dapat digunakan jika Anda ingin mengeksekusi beberapa pernyataan setelahnya Uji Kasus misalnya menyetel ulang variabel, menghapus file sementara, variabel, dll. |
5. | @Afterlass | Anotasi ini dapat digunakan jika Anda ingin mengeksekusi beberapa pernyataan setelah semua kasus pengujian, misalnya Melepaskan sumber daya setelah menjalankan semua kasus pengujian. |
6. | @Abaikan | Anotasi ini dapat digunakan jika Anda ingin mengabaikan beberapa pernyataan selama pelaksanaan pengujian, misalnya menonaktifkan beberapa kasus pengujian selama pelaksanaan pengujian. |
7. | @Tes(batas waktu=500) | Anotasi ini dapat digunakan jika Anda ingin menetapkan batas waktu selama pelaksanaan pengujian, misalnya jika Anda bekerja berdasarkan SLA (Perjanjian tingkat layanan), dan pengujian harus diselesaikan dalam waktu tertentu. |
8. | @Test(diharapkan=IllegalArgumentException.kelas) | Catatan ini dapat digunakan jika Anda ingin menangani beberapa pengecualian selama pelaksanaan pengujian. Misalnya, jika Anda ingin memeriksa apakah suatu metode tertentu memunculkan pengecualian tertentu atau tidak. |
JUnit Contoh Anotasi
Mari kita buat kelas yang membahas hal-hal penting JUnit anotasi dengan pernyataan print sederhana dan jalankan dengan kelas test runner:
Langkah 1) Pertimbangkan kelas Java di bawah ini yang memiliki berbagai metode yang dilampirkan pada anotasi yang tercantum di atas:
JunitAnnotationsExample.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
Langkah 2) mari buat kelas test runner untuk menjalankan tes di atas:
TestRunner.java
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(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Hasil yang diharapkan
- Semua kasus uji akan dieksekusi satu per satu, dan semua pernyataan cetak dapat dilihat di konsol.
- Seperti yang dibahas pada tabel di atas @Sebelum anotasi masuk JUnit, @BeforeClass [ metode m1() dan m2() ] akan dieksekusi masing-masing sebelum masing-masing dan sebelum semua kasus pengujian.
- Dengan cara yang sama @Setelah masuk JUnit, @afterClass (metode m3() dan m4()) akan dieksekusi setelah masing-masing kasus pengujian. @ignore (metode m6()) akan dianggap mengabaikan pengujian.
Mari kita menganalisis kasus uji yang digunakan di kelas Java di atas secara detail:
- Pertimbangkan metode m5() seperti yang diberikan di bawah ini:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
Dalam metode di atas saat Anda menambahkan string ke dalam variabel "daftar" begitu
- daftar.isEmpty() akan mengembalikan salah.
- menegaskanFalse(daftar.isEmpty()) harus kembali benar.
- Hasilnya, kasus uji akan terjadi lulus.
Karena Anda hanya menambahkan satu string dalam daftar, maka ukurannya adalah satu.
- daftar.ukuran() harus mengembalikan nilai int sebagai “1” .
- So menegaskanEquals(1, daftar.ukuran()) harus kembali benar.
- Hasilnya, kasus uji akan terjadi lulus.
- Pertimbangkan metode m7() seperti yang diberikan di bawah ini:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
Seperti yang dibahas di atas @Tes(batas waktu = 10)anotasi digunakan untuk menerapkan batas waktu dalam kasus uji.
- Pertimbangkan metode m8() seperti yang diberikan di bawah ini:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
Seperti yang dibahas di atas @Tes(diharapkan) akan memeriksa pengecualian tertentu selama eksekusi sehingga metode m8() akan memunculkan “Tidak Ada Pengecualian Metode Tersebut.” Hasilnya, pengujian akan dijalankan dengan pengecualian.
Ketika semua kasus uji dilewati, maka eksekusi pengujian berhasil.
Hasil Aktual
Karena ada tiga kasus uji pada contoh di atas, semua kasus uji akan dieksekusi satu per satu. Lihat keluaran di bawah ini:

Lihat pernyataan cetak di bawah ini yang dapat dilihat di konsol:
Menggunakan @BeforeClass , dieksekusi sebelum semua kasus uji
Menggunakan anotasi @Before, dieksekusi sebelum setiap kasus pengujian
Menggunakan @After, dieksekusi setelah setiap kasus uji
Menggunakan anotasi @Before, dieksekusi sebelum setiap kasus pengujian
Menggunakan @Test(timeout), ini dapat digunakan untuk menerapkan batas waktu JUnit4 kasus uji
Menggunakan @After, dieksekusi setelah setiap kasus uji
Menggunakan anotasi @Before, dieksekusi sebelum setiap kasus pengujian
Menggunakan @Test(expected) , ia akan memeriksa pengecualian yang ditentukan selama eksekusinya
Menggunakan @After, dieksekusi setelah setiap kasus uji
Menggunakan @AfterClass, dieksekusi setelah semua kasus uji
JUnit Kelas Tegas
Kelas ini menyediakan sekumpulan metode pernyataan yang berguna dalam menulis kasus uji. Jika semua pernyataan penegasan dilewati, hasil pengujian berhasil. Jika ada pernyataan penegasan yang gagal, hasil pengujian gagal.
Seperti yang Anda lihat sebelumnya, tabel di bawah ini menjelaskan metode dan deskripsi Assert yang penting:
S.No. | metode | Description |
---|---|---|
1. | void menegaskanEquals (boolean yang diharapkan, boolean aktual) | Ia memeriksa apakah dua nilai sama dengan metode sama dengan kelas Objek |
2. | batal menegaskanFalse(kondisi boolean) | fungsinya adalah untuk memeriksa apakah suatu kondisi salah. |
3. | void menegaskanNotNull(Objek objek) | Fungsionalitas “assertNotNull” adalah untuk memeriksa apakah suatu objek bukan null. |
4. | void menegaskanNull(Objek objek) | Fungsionalitas “assertNull” adalah untuk memeriksa apakah suatu objek adalah null. |
5. | batal menegaskanTrue(kondisi boolean) | Fungsi “assertTrue” adalah untuk memeriksa apakah suatu kondisi benar. |
6. | batal gagal() | Jika Anda ingin melakukan kesalahan pernyataan apa pun, Anda memiliki fail() yang selalu menghasilkan putusan gagal. |
7. | void menegaskanSame([String pesan] | Fungsionalitas “assertSame” adalah untuk memeriksa apakah kedua objek merujuk ke objek yang sama. |
8. | void menegaskanNotSame([String pesan] | Fungsionalitas “assertNotSame” adalah untuk memeriksa bahwa kedua objek tidak merujuk ke objek yang sama. |
JUnit Kelas Kasus Uji
Untuk menjalankan beberapa pengujian, kelas TestCase tersedia di org.junit.KasusUji paket. @Test anotasi memberitahu JUnit bahwa metode public void ini (Test Case di sini) yang dilampirkan dapat dijalankan sebagai test case.
Tabel di bawah ini menunjukkan beberapa metode penting yang tersedia org.junit.KasusUji kelas:
S.No. | metode | Description |
---|---|---|
1. | int hitunganKasusUji() | Metode ini digunakan untuk menghitung berapa jumlah kasus uji yang dieksekusi lari (Hasil Tes tr) Metode. |
2. | Hasil Tes buatHasil() | Metode ini digunakan untuk membuat a Hasil tes obyek. |
3. | String getName () | Metode ini mengembalikan string yang tidak lain hanyalah a Kasus cobaan. |
4. | Jalankan Hasil Tes() | Metode ini digunakan untuk menjalankan tes yang mengembalikan a Hasil tes obyek |
5. | batal dijalankan (hasil Tes) | Metode ini digunakan untuk menjalankan tes yang memiliki a Hasil tes objek yang tidak mengembalikan apa pun. |
6. | void setName (Nama string) | Metode ini digunakan untuk menetapkan nama a Kasus cobaan. |
7. | batalkan pengaturan() | Metode ini digunakan untuk menulis kode asosiasi sumber daya. misalnya Membuat koneksi database. |
8. | batalkan pembongkaran() | Metode ini digunakan untuk menulis kode rilis sumber daya. misalnya Lepaskan koneksi database setelah melakukan operasi transaksi. |
JUnit Kelas Hasil Tes
Saat Anda menjalankan pengujian, ia mengembalikan hasil (dalam bentuk Hasil tes obyek). Objek TestResult ini dapat digunakan untuk menganalisis objek yang dihasilkan. Hasil tes ini bisa gagal atau berhasil.
Lihat tabel di bawah untuk mengetahui metode penting yang digunakan di kelas org.junit.TestResult:
S.No. | metode | Description |
---|---|---|
1. | void addError(Uji uji, T yang dapat dilempar) | Metode ini digunakan jika Anda perlu menambahkan kesalahan pada pengujian. |
2. | void addFailure(Uji uji, AssertionFailedError t) | Metode ini digunakan jika Anda perlu menambahkan kegagalan ke daftar kegagalan. |
3. | void endTest(Tes tes) | Metode ini digunakan untuk memberitahukan bahwa tes telah dilakukan (selesai) |
4. | int jumlah kesalahan() | Metode ini digunakan untuk mendeteksi kesalahan selama pelaksanaan pengujian. |
5. | Pencacahan kesalahan() | Metode ini hanya mengembalikan kumpulan kesalahan (Enumerasi di sini). |
6. | int jumlah kegagalan() | Metode ini digunakan untuk menghitung jumlah kesalahan yang terdeteksi selama pelaksanaan pengujian. |
7. | batal dijalankan (tes TestCase) | Metode ini digunakan untuk mengeksekusi kasus uji. |
8. | ke dalam runCount() | Metode ini hanya menghitung pengujian yang dijalankan. |
9. | batalkan startTest(Tes tes) | Metode ini digunakan untuk memberitahukan bahwa tes dimulai. |
10. | batal berhenti() | Metode ini digunakan untuk menguji run agar dihentikan. |
JUnit Kelas Rangkaian Tes
Jika Anda ingin menjalankan beberapa pengujian dalam urutan tertentu, hal ini dapat dilakukan dengan menggabungkan semua pengujian di satu tempat. Tempat ini disebut sebagai ruang ujian.
Lihat tabel di bawah untuk metode penting yang digunakan org.junit.TestSuite kelas:
S.No. | metode | Description |
---|---|---|
1. | batal addTest(Tes tes) | Metode ini digunakan jika Anda ingin menambahkan tes ke suite. |
2. | batal addTestSuite(Kelas kelas tes) | Metode ini digunakan jika Anda ingin menentukan kelas sambil menambahkan tes ke suite. |
3. | int hitunganKasusUji() | Cara ini digunakan jika ingin menghitung jumlah kasus uji. |
4. | String getName () | Metode ini digunakan untuk mendapatkan nama test suite. |
5. | batal dijalankan (hasil Tes) | Metode ini digunakan untuk menjalankan tes dan mengumpulkan hasil tes Hasil tes obyek. |
6. | void setName (Nama string) | Metode ini digunakan untuk mengatur nama TestSuite. |
7. | Uji testAt(indeks int) | Metode ini digunakan jika Anda ingin mengembalikan pengujian pada indeks tertentu. |
8. | ke dalam jumlah tes() | Metode ini digunakan jika Anda ingin mengembalikan sejumlah tes di Suite. |
9. | peringatan Tes statis (Pesan string) | Metode ini mengembalikan pengujian yang gagal dan mencatat pesan peringatan. |
Kesimpulan
- JUnit menyediakan API portabel, yang menyediakan semua kelas penting dan Selenium anotasi berguna dalam menulis unit test.
- Kelas yang sangat berguna saat menulis kasus uji
- org.junit.Tegaskan
- org.junit.KasusUji
- org.junit.Hasil Tes
- org.junit.TestSuite
- Penting dan sering digunakan JUnit daftar anotasi@Sebelum@SebelumKelas@Setelah
@Afterlass
@Uji
@Mengabaikan