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 и другие @… аннотации к тесту уже аннотированы.

Торе Гард на TechPros нет
источник