SpringRunner против SpringBootTest


11

В модульном тесте, какие различия между @Runwith(SpringRunner.class)& @SpringBootTest?

Можете ли вы объяснить мне варианты использования каждого из них?


1
Вы читали какую-либо из различной документации? Что еще неясно?
Джоншарп

Очевидное различие заключается в тесте Spring и Spring, но это очень широкий вопрос
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.