JUnit ErrorCollector @Rule dengan Contoh
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 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 lainnya. Dalam situasi tersebut, Anda masih dapat melanjutkan menjalankan skrip pengujian menggunakan fitur khusus yang disediakan oleh JUnit dikenal sebagai “pengumpul kesalahan”.
Untuk ini, JUnit kegunaan @Anotasi aturan yang digunakan untuk membuat objek pengumpul kesalahan. Setelah objek pengumpul kesalahan dibuat, Anda dapat dengan mudah menambahkan semua kesalahan ke dalam objek menggunakan metode addError (Kesalahan yang dapat dilempar). Seperti yang Anda tahu, itu Dapat dibuang adalah kelas super dari Pengecualian dan error kelas dalam Java. Saat Anda menambahkan kesalahan dengan cara ini, kesalahan ini akan dicatat JUnit hasil tes .
Manfaat menambahkan semua kesalahan dalam Error Collector adalah Anda dapat memverifikasi semua kesalahan sekaligus. Selain itu, jika skrip gagal di tengah, skrip masih dapat melanjutkan eksekusi
Note: Dalam kasus penggunaan blok tegas atau coba/tangkap sederhana, penggunaan metode pengumpul kesalahan tidak dapat dilakukan.
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 pada objek tersebut untuk melacak masalahnya:
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. } }
Apa itu @Rule di jUnit?
JUnit menyediakan jenis penanganan tes yang khusus, Uji Kasus atau rangkaian pengujian dengan menggunakan @rule anotasi. Dengan menggunakan @rule, Anda dapat dengan mudah menambahkan atau mendefinisikan ulang perilaku pengujian.
Ada beberapa aturan bawaan yang disediakan oleh JUnit API yang dapat digunakan oleh penguji, atau bahkan Anda dapat menulis aturan kami sendiri.
Lihat baris kode di bawah ini, yang menunjukkan cara menggunakan anotasi @rule bersama dengan Error Collector:
@Rule public ErrorCollector collector= new ErrorCollector();
Contoh menggunakan ErrorCollector
Untuk memahami pengumpul kesalahan, mari buat 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 membuat "Objek Kolektor Kesalahan". Yang selanjutnya digunakan untuk menambahkan semua kesalahan untuk melaporkan masalah di akhir:
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 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 jejak kegagalan yang melacak semua kesalahan di satu tempat:
Manfaat JUnit Kolektor Kesalahan
Anda dapat menggunakan JUnit pernyataan untuk validasi fungsional atau GUI misalnya
- menegaskanEquals(Pesan string, Objek yang diharapkan, Objek sebenarnya) yang membandingkan bahwa dua objek adalah sama.
- Demikian pula, tegaskanTrue(Kondisi Boolean) menyatakan bahwa suatu kondisi benar.
Dengan menggunakan asersi, uji validasi menjadi mudah. Namun salah satu masalah utamanya adalah eksekusi pengujian akan berhenti meskipun satu pernyataan gagal.
Kontinuitas pengujian dan penanganan pemulihan sangat penting untuk menguji keberhasilan otomatisasi. Error Collector adalah cara terbaik untuk menangani skenario seperti itu.
Kesimpulan
- Pengumpul kesalahan Junit memungkinkan pengujian dilanjutkan bahkan setelah masalah pertama ditemukan dan pengujian gagal pada akhirnya
- Pengumpul kesalahan mengumpulkan semua objek kesalahan dan hanya melaporkannya, setelah semua, eksekusi pengujian selesai
- Manfaat menambahkan semua kesalahan dalam Error Collector adalah Anda dapat memverifikasi semua kesalahan sekaligus
- Pengumpul kesalahan hanya menambahkan kesalahan menggunakan metode addError(throwable err) yang disediakan oleh ErrorCollector.java.