SpringRunner vs SpringBootTest


11

Dalam tes unit, apa perbedaan antara @Runwith(SpringRunner.class)& @SpringBootTest?

Bisakah Anda menjelaskan kepada saya kasus penggunaan masing-masing?


1
Sudahkah Anda membaca berbagai dokumentasi? Apa yang masih belum jelas?
jonrsharpe

Perbedaan yang jelas adalah uji Spring vs uji boot Spring, tapi itu pertanyaan yang sangat luas
user7294900

Saya akan mengerti kapan saya harus menggunakan @SpringBootTest di samping SpringRunner.
zouari

Jawaban:


10

@RunWith (SpringRunner.class): Anda memerlukan anotasi ini untuk mengaktifkan fitur booting semi seperti @Autowire, @MockBeandll. Selama pengujian junit

digunakan untuk menyediakan jembatan antara fitur uji Spring Boot dan JUnit. Setiap kali kami menggunakan fitur pengujian Boot Musim Semi dalam pengujian JUnit kami, anotasi ini akan diperlukan.

@SpringBootTest: Anotasi ini digunakan untuk memuat konteks aplikasi lengkap untuk pengujian integrasi ujung ke ujung

Anotasi @SpringBootTest dapat digunakan saat kita perlu mem-bootstrap seluruh wadah. Anotasi berfungsi dengan membuat ApplicationContext yang akan digunakan dalam pengujian kami.

Inilah artikel dengan contoh-contoh jelas pada kedua skenario Baeldung


1

Dari spring.io :

@RunWith(SpringRunner.class)memberitahu JUnit untuk menjalankan menggunakan dukungan pengujian Spring. SpringRunneradalah nama baru untuk SpringJUnit4ClassRunner, itu hanya sedikit lebih mudah di mata.

@SpringBootTestmengatakan "bootstrap dengan dukungan Spring Boot" (mis. memuat application.propertiesdan memberikan semua kebaikan Spring Boot)

Jadi, jika Anda tidak membutuhkan semua yang dimuat oleh Spring Boot untuk pengujian integrasi Anda, Anda mungkin tidak perlu @SpringBootTest


0

@RunWith adalah anotasi lama dari JUnit 4 untuk menggunakan test runner. Jika Anda menggunakan JUnit 5 (Jupiter), Anda harus menggunakan @ExtendWith untuk menggunakan ekstensi JUnit

Lihat https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

"Jika Anda menggunakan JUnit 4, jangan lupa juga menambahkan @RunWith (SpringRunner.class) ke pengujian Anda, jika tidak, anotasi akan diabaikan. Jika Anda menggunakan JUnit 5, tidak perlu menambahkan @ExtendWith yang setara SpringExtension.class) sebagai @SpringBootTest dan lainnya @ ... Anotasi tes sudah dijelaskan dengan itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.