JUnit ErrorCollector @Rule dengan Contoh
โก Ringkasan Cerdas
JUnit ErrorCollector adalah aturan yang memungkinkan pengujian tetap berjalan setelah terjadi kegagalan, mengumpulkan setiap objek kesalahan dan melaporkannya bersama-sama setelah metode pengujian selesai, alih-alih berhenti.ping pada masalah pertama.
Dalam skenario normal, setiap kali Anda mengidentifikasi kesalahan apa pun selama pelaksanaan pengujian, Anda akan menghentikan pengujian, memperbaiki kesalahan, dan menjalankan kembali pengujian.
Tapi JUnit memiliki pendekatan yang sedikit berbeda. Dengan JUnit Dengan pengumpul kesalahan, Anda masih dapat melanjutkan eksekusi pengujian bahkan setelah masalah ditemukan atau pengujian gagal. Pengumpul kesalahan mengumpulkan semua objek kesalahan dan melaporkannya hanya sekali, setelah eksekusi pengujian selesai.
Mengapa menggunakan Kolektor Kesalahan?
Saat menulis skrip pengujian, Anda ingin menjalankan semua pengujian meskipun ada baris kode yang gagal karena kegagalan jaringan, kegagalan pernyataan, atau alasan lain. Dalam situasi tersebut, Anda masih dapat melanjutkan menjalankan skrip pengujian menggunakan fitur khusus yang disediakan oleh JUnit dikenal sebagai โpengumpul kesalahanโ.
Untuk ini, JUnit menggunakan @Anotasi aturan, yang digunakan untuk membuat objek pengumpul kesalahan. Setelah objek pengumpul kesalahan dibuat, Anda dapat dengan mudah menambahkan semua kesalahan ke dalam objek tersebut menggunakan metode tersebut. addError (Kesalahan yang dapat dilempar). Seperti yang Anda ketahui, Dapat dibuang adalah kelas super dari Pengecualian ke error kelas di JavaSaat Anda menambahkan kesalahan dengan cara ini, kesalahan tersebut akan dicatat dalam log. JUnit hasil tes.
Keuntungan menambahkan semua kesalahan ke dalam Error Collector adalah Anda dapat memverifikasi semua kesalahan sekaligus. Selain itu, jika skrip gagal di tengah jalan, eksekusi tetap berlanjut hingga akhir metode pengujian.
NoteDalam kasus penggunaan assert sederhana atau blok try/catch, penggunaan metode pengumpul kesalahan tidak akan dimungkinkan.
Kode sampel
Untuk memahami lebih lanjut tentang Error Collector, lihat contoh kode di bawah ini, yang menunjukkan cara membuat objek Error Collector dan menambahkan semua kesalahan ke objek tersebut. tracMasalahnya adalah:
package guru99.junit; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); collector.checkThat(getResults(), not(containsString("here is an error"))); // all lines of code will execute and at the end a combined failure will be logged in. } }
Catatan: Ini adalah contoh ilustratif.tract, bukan file yang dapat dikompilasi. Komentar terakhirnya berlanjut ke baris kedua tanpa awalan //, dan getResults() serta pencocok Hamcrest tidak ditampilkan. Versi lengkap yang dapat dijalankan ada di bawah ini. Contoh menggunakan ErrorCollector.
Apa itu @Rule dalam JUnit?
JUnit menyediakan jenis penanganan tes khusus, Uji Kasus atau rangkaian pengujian dengan menggunakan @Anotasi aturanDengan menggunakan @Rule, Anda dapat dengan mudah menambahkan atau mendefinisikan ulang perilaku pengujian.
Terdapat beberapa aturan bawaan yang disediakan oleh JUnit API yang dapat digunakan oleh penguji, dan Anda juga dapat menulis aturan Anda sendiri. Bidang aturan harus bersifat publik, non-statis, dan bertipe yang mengimplementasikan TestRule.
Lihat baris kode di bawah ini, yang menunjukkan cara menggunakan anotasi @Rule bersama dengan Error Collector:
@Rule public ErrorCollector collector= new ErrorCollector();
JUnit Catatan tahun 5: Jupiter mengganti aturan dengan API Ekstensi, sehingga @Rule dan ErrorCollector tidak ada di org.junit.jupiter. Padanan terdekatnya adalah Assertions.assertAll() dan AssertJ SoftAssertions. JUnit Kode 4 yang ditampilkan di sini masih berjalan di mesin antik ini. Lihat JUnit penjelasan tutorial untuk peta lengkapping.
Contoh menggunakan ErrorCollector
Untuk memahami pengumpul kesalahan, mari kita buat sebuah kelas dan aturan untuk mengumpulkan semua kesalahan. Anda akan menambahkan semua kesalahan menggunakan addError(throwable) di sini.
Lihat kode di bawah ini, yang hanya membuat aturan yang tidak lain adalah "objek Pengumpul Kesalahan." Kode ini selanjutnya digunakan untuk menambahkan semua kesalahan agar masalah tersebut dapat dilaporkan pada akhirnya:
ErrorCollectorExample.java
package guru99.junit; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); System.out.println("Hello"); try { Assert.assertTrue("A " == "B"); } catch (Throwable t) { collector.addError(t); } System.out.println("World!!!!"); } }
TestRunner.java
Mari kita tambahkan kelas pengujian di atas ke dalam test runner dan jalankan untuk mengumpulkan semua kesalahan. 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(ErrorCollectorExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Keluaran:
Lihat kegagalannya trace, yang tracSemua kesalahan terkumpul di satu tempat. The JUnit Tampilan tersebut menghitung satu kali eksekusi tetapi melaporkan dua kesalahan dan satu kegagalan, masing-masing dengan nomor barisnya sendiri:
Manfaat JUnit Kolektor Kesalahan
Anda bisa menggunakan a JUnit pernyataan untuk validasi fungsional atau GUI, misalnya:
- assertEquals(String message, Object expected, Object actual), yang membandingkan apakah dua objek itu sama.
- Demikian pula, tegaskanTrue(Kondisi Boolean) menyatakan bahwa suatu kondisi benar.
Dengan menggunakan assertion, pengujian validasi menjadi mudah. โโNamun, satu masalah utama adalah eksekusi pengujian akan berhenti bahkan jika satu assertion saja gagal.
Penanganan kontinuitas dan pemulihan pengujian sangat penting untuk keberhasilan otomatisasi pengujian, dan hal ini paling penting dalam jangka panjang. Selenium Alur kerja di mana memulai ulang browser setelah setiap pengecekan yang gagal sangat mahal. Error Collector adalah cara terbaik untuk menangani skenario seperti itu.

