SpringRunner - SpringBootTest


11

У одиничному тесті, які відмінності між @Runwith(SpringRunner.class)& @SpringBootTest?

Чи можете ви пояснити мені випадки використання кожного з них?


1
Чи читали ви будь-яку з різних документів? Що ще незрозуміло?
jonrsharpe

Очевидною різницею є тест Spring - vs Spring boot test, але це дуже широке питання
user7294900

Я зрозумів, коли слід використовувати @SpringBootTest на додаток до SpringRunner.
зуарі

Відповіді:


10

@RunWith (SpringRunner.class): Вам потрібно це анотацію просто включити пружинний завантаження функції , такі як @Autowire, і @MockBeanт.д .. під час тестування JUnit

використовується, щоб забезпечити міст між функціями тесту Spring Boot та JUnit. Кожен раз, коли ми використовуємо будь-які функції тестування Spring Boot в наших тестах JUnit, ця примітка буде потрібна.

@SpringBootTest: Ця примітка використовується для завантаження повного контексту програми для тестування інтеграції від кінця до кінця

Анотацію @SpringBootTest можна використовувати, коли нам потрібно завантажувати весь контейнер. Анотація працює, створюючи ApplicationContext, який буде використаний у наших тестах.

Ось стаття з чіткими прикладами обох сценаріїв Baeldung


1

Від spring.io :

@RunWith(SpringRunner.class)каже JUnit запустити за допомогою тестової підтримки Spring. SpringRunnerце нова назва для SpringJUnit4ClassRunner, це просто трохи простіше на око.

@SpringBootTestговорить "завантажувальний апарат із підтримкою Spring Boot" (наприклад, завантажте application.propertiesта дайте мені все добро для Spring Boot)

Тож якщо вам не потрібно все, що завантажує Spring Boot для вашого інтеграційного тесту, вам може не знадобитися @SpringBootTest


0

@RunWith - це стара примітка від JUnit 4 для використання тестових бігунів. Якщо ви використовуєте JUnit 5 (Jupiter), вам слід використовувати @ExtendWith, щоб використовувати розширення JUnit

Див. Https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

"Якщо ви використовуєте JUnit 4, не забудьте додати @RunWith (SpringRunner.class) до свого тесту, інакше примітки будуть проігноровані. Якщо ви використовуєте JUnit 5, не потрібно додавати еквівалент @ExtendWith ( SpringExtension.class) як @SpringBootTest та інші @ ... Тестові примітки вже зазначаються з ним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.