Dalam tes unit, apa perbedaan antara @Runwith(SpringRunner.class)
& @SpringBootTest
?
Bisakah Anda menjelaskan kepada saya kasus penggunaan masing-masing?
java
spring-boot
junit
spring-boot-test
zouari
sumber
sumber
Jawaban:
@RunWith (SpringRunner.class): Anda memerlukan anotasi ini untuk mengaktifkan fitur booting semi seperti
@Autowire
,@MockBean
dll. Selama pengujian junit@SpringBootTest: Anotasi ini digunakan untuk memuat konteks aplikasi lengkap untuk pengujian integrasi ujung ke ujung
Inilah artikel dengan contoh-contoh jelas pada kedua skenario Baeldung
sumber
Dari spring.io :
Jadi, jika Anda tidak membutuhkan semua yang dimuat oleh Spring Boot untuk pengujian integrasi Anda, Anda mungkin tidak perlu
@SpringBootTest
sumber
@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.
sumber