Dalam tes unit, apa perbedaan antara @Runwith(SpringRunner.class)
& @SpringBootTest
?
Bisakah Anda menjelaskan kepada saya kasus penggunaan masing-masing?
Dalam tes unit, apa perbedaan antara @Runwith(SpringRunner.class)
& @SpringBootTest
?
Bisakah Anda menjelaskan kepada saya kasus penggunaan masing-masing?
Jawaban:
@RunWith (SpringRunner.class): Anda memerlukan anotasi ini untuk mengaktifkan fitur booting semi seperti @Autowire
, @MockBean
dll. 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
Dari spring.io :
@RunWith(SpringRunner.class)
memberitahu JUnit untuk menjalankan menggunakan dukungan pengujian Spring.SpringRunner
adalah nama baru untukSpringJUnit4ClassRunner
, itu hanya sedikit lebih mudah di mata.
@SpringBootTest
mengatakan "bootstrap dengan dukungan Spring Boot" (mis. memuatapplication.properties
dan 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
@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
"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.