Apa itu JUnit Annotations?
JUNIT ANNOTATIONS adalah bentuk khusus dari meta-data sintaksis yang dapat ditambahkan ke kode sumber Java untuk keterbacaan dan struktur kode yang lebih baik. Variabel, parameter, paket, metode, dan kelas dapat dianotasi. Anotasi diperkenalkan di Junit4, yang membuat kode Java lebih mudah dibaca dan sederhana. Inilah perbedaan besar antara Junit3 dan Junit4 bahwa Junit4 didasarkan pada anotasi.
Dengan pengetahuan tentang anotasi di Junit5, seseorang dapat dengan mudah mempelajari dan menerapkan pengujian JUnit. Di bawah ini adalah daftar anotasi penting dan sering digunakan:
S.No. | Anotasi | Deskripsi |
---|---|---|
1. | @Uji | Anotasi ini merupakan pengganti dari org.junit.TestCase yang menunjukkan bahwa metode public void yang dilampirkan dapat dieksekusi sebagai Test Case. |
2. | @Sebelum | Anotasi ini digunakan jika Anda ingin menjalankan beberapa pernyataan seperti prasyarat sebelum setiap kasus pengujian. |
3. | @Sebelum kelas | Anotasi ini digunakan jika Anda ingin menjalankan beberapa pernyataan sebelum semua kasus pengujian misalnya koneksi pengujian harus dijalankan sebelum semua kasus pengujian. |
4. | @Setelah | Anotasi ini dapat digunakan jika Anda ingin menjalankan beberapa pernyataan setelah setiap Kasus Uji untuk misalnya menyetel ulang variabel, menghapus file sementara, variabel, dll. |
5. | @Setelah Kelas | Anotasi ini dapat digunakan jika Anda ingin menjalankan beberapa pernyataan setelah semua kasus uji misalnya, Melepaskan sumber daya setelah menjalankan semua kasus uji. |
6. | @Bayu_joo | Anotasi ini dapat digunakan jika Anda ingin mengabaikan beberapa pernyataan selama eksekusi uji, misalnya menonaktifkan beberapa kasus uji selama eksekusi uji. |
7. | @Test (batas waktu = 500) | Anotasi ini dapat digunakan jika Anda ingin menyetel beberapa waktu tunggu selama pelaksanaan pengujian, misalnya jika Anda bekerja di bawah beberapa SLA (Perjanjian tingkat layanan), dan pengujian harus diselesaikan dalam beberapa waktu yang ditentukan. |
8. | @Test (diharapkan = IllegalArgumentException.class) | Anotasi ini dapat digunakan jika Anda ingin menangani beberapa pengecualian selama eksekusi uji. Misalnya, jika Anda ingin memeriksa apakah metode tertentu memberikan pengecualian tertentu atau tidak. |
Dalam tutorial ini, Anda akan belajar-
- Contoh Anotasi JUnit
- JUnit Assert Class
- Kelas Kasus Uji JUnit
- Kelas JUnit TestResult
- Kelas JUnit Test Suite
Contoh Anotasi JUnit
Mari buat kelas yang mencakup anotasi JUnit penting dengan pernyataan cetak sederhana dan jalankan dengan kelas runner pengujian:
Langkah 1) Pertimbangkan kelas java di bawah ini yang memiliki berbagai metode yang dilampirkan ke penjelasan yang tercantum di atas:
JunitAnnotationsExample.java
paket guru99.junit;impor org.junit.Assert.assertEquals statis;impor org.junit.Assert.assertFalse statis;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 ArrayListlist;@Sebelum kelaspublic static void m1 () {System.out.println ("Menggunakan @BeforeClass, dijalankan sebelum semua kasus pengujian");}@Sebelumruang kosong publik m2 () {list = new ArrayList ();System.out.println ("Menggunakan anotasi @Before, dijalankan sebelum setiap kasus pengujian");}@Setelah Kelaspublic static void m3 () {System.out.println ("Menggunakan @AfterClass, dijalankan setelah semua kasus uji");}@Setelahpublic void m4 () {list.clear ();System.out.println ("Menggunakan @After, dijalankan setelah setiap kasus pengujian");}@Ujipublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Mengabaikanpublic void m6 () {System.out.println ("Menggunakan @Ignore, eksekusi ini diabaikan");}@Test (waktu tunggu = 10)public void m7 () {System.out.println ("Menggunakan @Test (batas waktu), ini dapat digunakan untuk memaksakan batas waktu dalam kasus uji JUnit4");}@Test (diharapkan = NoSuchethodException.class)public void m8 () {System.out.println ("Menggunakan @Test (diharapkan), ini akan memeriksa pengecualian yang ditentukan selama eksekusinya");}}
Langkah 2) mari buat kelas runner pengujian untuk menjalankan pengujian di atas:
TestRunner.java
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 (JunitAnnotationsExample.class);untuk (Kegagalan kegagalan: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Hasil ==" + result.wasSuccessful ());}}
Hasil yang diharapkan
- Semua kasus uji akan dijalankan satu per satu, dan semua pernyataan cetak dapat dilihat di konsol.
- Seperti yang dibahas dalam tabel di atas @Before, @BeforeClass [metode m1 () dan m2 ()] akan dieksekusi sebelum masing-masing dan sebelum semua kasus pengujian.
- Dengan cara yang sama @ after, @ afterClass (metode m3 () dan m4 ()) akan dieksekusi setelah masing-masing dan setelah semua kasus pengujian. @ignore (metode m6 ()) akan diperlakukan sebagai mengabaikan pengujian.
Mari menganalisis kasus uji yang digunakan di kelas java di atas secara mendetail:
- Pertimbangkan metode m5 () seperti yang diberikan di bawah ini:
@Ujipublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
Dalam metode di atas saat Anda menambahkan string dalam variabel "daftar" jadi
- list.isEmpty () akan mengembalikan false.
- assertFalse (list.isEmpty ()) harus mengembalikan nilai true.
- Hasilnya, test case akan lulus .
Karena Anda hanya menambahkan satu string dalam daftar, maka ukurannya adalah satu.
- list.size () harus mengembalikan nilai int sebagai "1".
- Jadi assertEquals (1, list.size ()) harus mengembalikan nilai true.
- Hasilnya, test case akan lulus .
- Pertimbangkan metode m7 () seperti yang diberikan di bawah ini:
@Test (waktu tunggu = 10)public void m7 () {System.out.println ("Menggunakan @Test (batas waktu), ini dapat digunakan untuk memaksakan batas waktu dalam kasus uji JUnit4");}
Seperti yang dibahas di atas, anotasi @Test (timeout = 10) digunakan untuk memaksakan batas waktu dalam kasus pengujian.
- Pertimbangkan metode m8 () seperti yang diberikan di bawah ini:
@Test (diharapkan = NoSuchethodException.class)public void m8 () {System.out.println ("Menggunakan @Test (diharapkan), ini akan memeriksa pengecualian yang ditentukan selama eksekusinya");}
Seperti yang dibahas di atas, @Test (diharapkan) akan memeriksa pengecualian tertentu selama eksekusinya sehingga metode m8 () akan menampilkan "Tidak Ada Pengecualian Metode Tersebut". Hasilnya, pengujian akan dijalankan dengan pengecualian.
Karena semua kasus uji dilewati, ini menghasilkan eksekusi uji yang berhasil.
Hasil Aktual
Karena ada tiga kasus uji pada contoh di atas, semua kasus uji akan dijalankan satu per satu. Lihat keluaran di bawah ini :
Lihat pernyataan cetak di bawah ini yang dapat dilihat di konsol:
Menggunakan @BeforeClass, dijalankan sebelum semua kasus pengujian
Menggunakan anotasi @Before, yang dijalankan sebelum setiap kasus pengujian
Menggunakan @After, dijalankan setelah setiap kasus pengujian
Menggunakan anotasi @Before, yang dijalankan sebelum setiap kasus pengujian
Menggunakan @Test (waktu tunggu), ini bisa digunakan untuk memberlakukan waktu tunggu dalam kasus pengujian JUnit4
Menggunakan @After, dijalankan setelah setiap kasus pengujian
Menggunakan anotasi @Before, yang dijalankan sebelum setiap kasus pengujian
Menggunakan @Test (diharapkan), ini akan memeriksa pengecualian yang ditentukan selama eksekusinya
Menggunakan @After, dijalankan setelah setiap kasus pengujian
Menggunakan @AfterClass, dijalankan setelah semua kasus pengujian
JUnit Assert Class
Kelas ini menyediakan sekumpulan metode pernyataan yang berguna dalam menulis kasus uji. Jika semua pernyataan assert diluluskan, hasil tes berhasil. Jika ada pernyataan assert yang gagal, hasil tes akan gagal.
Seperti yang Anda lihat sebelumnya, tabel di bawah ini menjelaskan metode dan deskripsi Assert yang penting:
S.No. | metode | Deskripsi |
---|---|---|
1. | void assertEquals (boolean diharapkan, boolean aktual) | Ia memeriksa apakah dua nilai sama dengan metode sama dengan kelas Objek |
2. | void assertFalse (kondisi boolean) | fungsionalitas adalah untuk memeriksa bahwa suatu kondisi salah. |
3. | void assertNotNull (Objek objek) | Fungsionalitas "assertNotNull" adalah untuk memeriksa bahwa suatu objek tidak null. |
4. | void assertNull (Objek objek) | Fungsionalitas "assertNull" adalah untuk memeriksa bahwa suatu objek adalah null. |
5. | void assertTrue (kondisi boolean) | Fungsionalitas "assertTrue" adalah untuk memeriksa bahwa suatu kondisi benar. |
6. | batal gagal () | Jika Anda ingin menampilkan kesalahan pernyataan apa pun, Anda memiliki fail () yang selalu menghasilkan vonis gagal. |
7. | void assertSame ([String message] | Fungsionalitas "assertSame" adalah untuk memeriksa bahwa dua objek merujuk ke objek yang sama. |
8. | void assertNotSame ([Pesan string] | Fungsionalitas "assertNotSame" adalah untuk memeriksa bahwa kedua objek tidak merujuk ke objek yang sama. |
Kelas Kasus Uji JUnit
Untuk menjalankan beberapa pengujian, kelas TestCase tersedia di paket org.junit.TestCase . Anotasi @Test memberi tahu JUnit bahwa metode public void ini (Uji Kasus di sini) yang dilampirkan dapat dijalankan sebagai kasus uji.
Tabel di bawah ini menunjukkan beberapa metode penting yang tersedia di kelas org.junit.TestCase :
S.No. | metode | Deskripsi |
---|---|---|
1. | int countTestCases () | Metode ini digunakan untuk menghitung berapa jumlah test case yang dijalankan oleh metode run (TestResult tr) . |
2. | TestResult createResult () | Metode ini digunakan untuk membuat objek TestResult . |
3. | String getName () | Metode ini mengembalikan string yang tidak lain adalah TestCase . |
4. | TestResult run () | Metode ini digunakan untuk menjalankan pengujian yang mengembalikan objek TestResult |
5. | void run (hasil TestResult) | Metode ini digunakan untuk menjalankan pengujian yang memiliki objek TestResult yang tidak mengembalikan apa pun. |
6. | void setName (Nama string) | Metode ini digunakan untuk menetapkan nama TestCase. |
7. | void setUp () | Metode ini digunakan untuk menulis kode asosiasi sumber daya. misalnya Membuat koneksi database. |
8. | void tearDown () | Metode ini digunakan untuk menulis kode rilis sumber daya. misalnya Lepaskan koneksi database setelah melakukan operasi transaksi. |
Kelas JUnit TestResult
Saat Anda menjalankan pengujian, pengujian akan mengembalikan hasil (dalam bentuk objek TestResult ). Objek TestResult ini dapat digunakan untuk menganalisis objek yang dihasilkan. Hasil tes ini bisa gagal atau berhasil. Lihat tabel di bawah ini untuk metode penting yang digunakan di kelas org.junit.TestResult:S.No. | metode | Deskripsi |
---|---|---|
1. | void addError (Test test, Throwable t) | Metode ini digunakan jika Anda perlu menambahkan kesalahan pada tes. |
2. | void addFailure (Uji coba, AssertionFailedError t) | Metode ini digunakan jika Anda perlu menambahkan kegagalan ke daftar kegagalan. |
3. | void endTest (Test test) | Metode ini digunakan untuk memberi tahu bahwa tes telah dilakukan (selesai) |
4. | int errorCount () | Metode ini digunakan untuk mendeteksi kesalahan selama eksekusi uji. |
5. | Kesalahan enumerasi | Metode ini hanya mengembalikan kumpulan kesalahan (Pencacahan di sini). |
6. | int failureCount () | Metode ini digunakan untuk mendapatkan jumlah kesalahan yang terdeteksi selama eksekusi uji. |
7. | void run (TestCase test) | Metode ini digunakan untuk menjalankan kasus uji. |
8. | int runCount () | Metode ini hanya menghitung pengujian yang dijalankan. |
9. | batal startTest (Test test) | Metode ini digunakan untuk memberi tahu bahwa tes dimulai. |
10. | batal berhenti () | Metode ini digunakan untuk menguji jalan yang akan dihentikan. |
Kelas JUnit Test Suite
Jika Anda ingin menjalankan beberapa pengujian dalam urutan yang ditentukan, hal itu dapat dilakukan dengan menggabungkan semua pengujian di satu tempat. Tempat ini disebut sebagai test suites.
Lihat tabel di bawah ini untuk metode penting yang digunakan di kelas org.junit.TestSuite :
S.No. | metode | Deskripsi |
---|---|---|
1. | void addTest (Test test) | Metode ini digunakan jika Anda ingin menambahkan tes ke suite. |
2. | void addTestSuite (Class extends TestCase> testClass) | Metode ini digunakan jika Anda ingin menentukan kelas sambil menambahkan tes ke suite. |
3. | int countTestCases () | Metode ini digunakan jika Anda ingin menghitung jumlah kasus uji. |
4. | String getName () | Metode ini digunakan untuk mendapatkan nama rangkaian pengujian. |
5. | void run (hasil TestResult) | Metode ini digunakan untuk menjalankan pengujian dan mengumpulkan hasil pengujian di objek TestResult . |
6. | void setName (Nama string) | Metode ini digunakan untuk mengatur nama TestSuite . |
7. | Uji testAt (int index) | Metode ini digunakan jika Anda ingin mengembalikan tes pada indeks tertentu. |
8. | int testCount () | Metode ini digunakan jika Anda ingin mengembalikan sejumlah tes di Suite. |
9. | peringatan Tes statis (pesan String) | Metode ini mengembalikan tes yang akan gagal dan mencatat pesan peringatan. |
Ringkasan:
- JUnit menyediakan API portabel, yang menyediakan semua kelas dan anotasi penting yang berguna dalam menulis pengujian unit.
- Kelas yang sangat berguna saat menulis kasus uji
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- daftar anotasi penting dan sering digunakan
@Sebelum
@Sebelum kelas
@Setelah
@Setelah Kelas
@Uji
@Mengabaikan