SpringRunner vs SpringBootTest

11

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

Bisakah Anda menjelaskan kepada saya kasus penggunaan masing-masing?

zouari
sumber
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

Kolam kematian
sumber
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

Xavier FRANCOIS
sumber
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.

Tore Gard di techpros no
sumber