Saya ingin menulis kasus pengujian untuk sebagian besar kode, saya ingin mengetahui detail @Rule
fitur penjelasan JUnit , sehingga saya dapat menggunakannya untuk menulis kasus pengujian. Harap berikan beberapa jawaban atau tautan yang bagus, yang memberikan deskripsi terperinci tentang fungsinya melalui contoh sederhana.
java
junit
junit4
junit-rule
Dipak
sumber
sumber
@Rule
dengan cukup baik, terutama memeriksa bagian terakhir "Urutan Acara Secara Terinci"Jawaban:
Aturan digunakan untuk menambahkan fungsionalitas tambahan yang berlaku untuk semua tes dalam kelas tes, tetapi dengan cara yang lebih umum.
Sebagai contoh, ExternalResource mengeksekusi kode sebelum dan sesudah suatu metode pengujian, tanpa harus menggunakan
@Before
dan@After
. MenggunakanExternalResource
daripada@Before
dan@After
memberi peluang untuk menggunakan kembali kode yang lebih baik; aturan yang sama dapat digunakan dari dua kelas tes yang berbeda.Desainnya didasarkan pada: Interceptors in JUnit
Untuk informasi lebih lanjut lihat JUnit wiki: Rules .
sumber
Aturan Junit bekerja berdasarkan prinsip AOP (pemrograman berorientasi aspek). Ini memotong metode pengujian sehingga memberikan kesempatan untuk melakukan beberapa hal sebelum atau setelah pelaksanaan metode pengujian tertentu.
Ambil contoh kode di bawah ini:
Setiap kali metode pengujian di atas dijalankan, folder sementara dibuat dan terhapus setelah eksekusi metode. Ini adalah contoh aturan out-of-box yang disediakan oleh Junit.
Perilaku serupa juga dapat dicapai dengan membuat aturan kita sendiri. Junit menyediakan antarmuka TestRule, yang dapat diimplementasikan untuk membuat Aturan Junit kita sendiri.
Berikut ini tautan yang bermanfaat untuk referensi:
sumber
tl; dr untuk cara kerjanya: JUnit membungkus metode pengujian Anda dalam objek Statement jadi statement.Execute () menjalankan pengujian Anda. Kemudian alih-alih memanggil statement.Execute () langsung untuk menjalankan tes Anda, JUnit meneruskan Pernyataan ke TestRule dengan penjelasan @Rule. Fungsi "terapkan" TestRule mengembalikan Pernyataan baru yang diberikan Pernyataan bersama pengujian Anda. Metode Execute () Pernyataan baru dapat memanggil metode pelaksanaan Pernyataan pernyataan (atau tidak, atau menyebutnya beberapa kali), dan melakukan apa pun yang diinginkan sebelum dan sesudahnya. Sekarang JUnit memiliki Pernyataan baru yang melakukan lebih dari sekedar menjalankan tes, dan itu dapat kembali meneruskannya ke aturan lain sebelum akhirnya memanggil Execute.
sumber
Aturan digunakan untuk meningkatkan perilaku masing-masing metode pengujian dengan cara yang umum. Aturan Junit mencegat metode pengujian dan memungkinkan kami untuk melakukan sesuatu sebelum metode pengujian mulai dieksekusi dan setelah metode pengujian dijalankan.
Misalnya, dengan menggunakan aturan @Timeout, kita dapat mengatur batas waktu untuk semua tes.
Aturan @T temporaryFolder digunakan untuk membuat folder sementara, file. Setiap kali metode pengujian dieksekusi, folder sementara dibuat dan terhapus setelah eksekusi metode.
Anda dapat melihat contoh beberapa aturan bawaan yang disediakan oleh junit di tautan ini .
sumber