JUnit ErrorCollector @Rule dengan Contoh

Dalam skenario normal, setiap kali Anda mengidentifikasi kesalahan apa pun selama eksekusi pengujian, Anda akan menghentikan pengujian, memperbaiki kesalahan, dan menjalankan kembali pengujian.

Tetapi JUnit memiliki pendekatan yang sedikit berbeda. Dengan pengumpul kesalahan JUnit, 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 uji selesai.

Dalam tutorial ini, Anda akan belajar-

  • Apa itu kolektor kesalahan di JUnit?
  • Apa itu @Rule di jUnit?
  • Contoh menggunakan ErrorCollector
  • Manfaat JUnit ErrorCollector

Mengapa menggunakan Error Collector?

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 yang dikenal sebagai "pengumpul kesalahan".

Untuk ini, JUnit menggunakan anotasi @Rule yang digunakan untuk membuat objek pengumpul kesalahan. Setelah objek untuk pengumpul kesalahan dibuat, Anda dapat dengan mudah menambahkan semua kesalahan ke dalam objek menggunakan metode addError (Throwable error). Seperti yang Anda ketahui, Throwable adalah kelas super dari kelas Exception dan Error di Java. Saat Anda menambahkan kesalahan dengan cara ini, kesalahan ini akan dicatat dalam hasil tes JUnit.

Manfaat menambahkan semua kesalahan dalam Kolektor Kesalahan adalah Anda dapat memverifikasi semua kesalahan sekaligus. Selain itu, jika skrip gagal di tengah, ia masih dapat terus mengeksekusinya

Catatan : Jika menggunakan simple assert atau try / catch block, tidak mungkin menggunakan metode error collector.

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 error di objek tersebut untuk melacak masalah:

paket guru99.junit;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;kelas publik ErrorCollectorExample {@Aturanpublik ErrorCollector kolektor = ErrorCollector baru ();@Ujipublic void example () {collector.addError (new Throwable ("Ada kesalahan di baris pertama"));collector.addError (new Throwable ("Ada kesalahan di baris kedua"));collector.checkThat (getResults (),not (containsString ("di sini adalah kesalahan")));// semua baris kode akan dieksekusi dan pada akhirnya kegagalan gabungan akan terjadimasuk.}}

Apa itu @Rule di jUnit?

JUnit menyediakan jenis penanganan khusus untuk pengujian, Kasus Uji, atau rangkaian pengujian dengan menggunakan anotasi @rule . Menggunakan @rule, Anda dapat dengan mudah menambahkan atau mendefinisikan ulang perilaku pengujian.

Ada beberapa aturan bawaan yang disediakan oleh JUnit API yang dapat digunakan 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:

@Aturanpublik ErrorCollector kolektor = ErrorCollector baru ();

Contoh menggunakan ErrorCollector

Untuk memahami kolektor kesalahan, mari buat kelas dan aturan untuk mengumpulkan semua kesalahan. Anda akan menambahkan semua kesalahan menggunakan addError (dapat dibuang) di sini.

Lihat di bawah kode 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

paket guru99.junit;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.rules.ErrorCollector;kelas publik ErrorCollectorExample {@Aturanpublik ErrorCollector kolektor = ErrorCollector baru ();@Ujipublic void example () {collector.addError (new Throwable ("Ada kesalahan di baris pertama"));collector.addError (new Throwable ("Ada kesalahan di baris kedua"));System.out.println ("Halo");coba {Assert.assertTrue ("A" == "B");} catch (Throwable t) {collector.addError (t);}System.out.println ("Dunia !!!!");}}

TestRunner.java

Mari tambahkan kelas pengujian di atas dalam runner pengujian dan jalankan untuk mengumpulkan semua error. Lihat kode di bawah ini:

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 (ErrorCollectorExample.class);untuk (Kegagalan kegagalan: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Hasil ==" + result.wasSuccessful ());}}

Keluaran:

Lihat jejak kegagalan yang melacak semua kesalahan di satu tempat:

Manfaat JUnit ErrorCollector

Anda dapat menggunakan pernyataan JUnit untuk validasi fungsional atau GUI misalnya

  1. assertEquals (Pesan string, Objek diharapkan, Objek aktual) yang membandingkan bahwa dua objek sama.
  2. Demikian pula, assertTrue (kondisi Boolean) menegaskan bahwa suatu kondisi benar.

Dengan menggunakan pernyataan, uji validasi menjadi mudah. Namun satu masalah utama adalah bahwa 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 semacam itu.

Ringkasan :

  • Pengumpul kesalahan sampah memungkinkan pengujian dilanjutkan bahkan setelah masalah pertama ditemukan dan pengujian gagal di bagian akhir
  • Pengumpul kesalahan mengumpulkan semua objek kesalahan dan hanya melaporkannya, setelah semua, eksekusi uji selesai
  • Manfaat menambahkan semua kesalahan dalam Kolektor Kesalahan adalah Anda dapat memverifikasi semua kesalahan sekaligus
  • Kolektor kesalahan hanya menambahkan kesalahan menggunakan metode addError (kesalahan yang dapat dibuang) yang disediakan oleh ErrorCollector.java.

Artikel yang menarik...