В модульном тесте, какие различия между @Runwith(SpringRunner.class)
& @SpringBootTest
?
Можете ли вы объяснить мне варианты использования каждого из них?
В модульном тесте, какие различия между @Runwith(SpringRunner.class)
& @SpringBootTest
?
Можете ли вы объяснить мне варианты использования каждого из них?
Ответы:
@RunWith (SpringRunner.class): вам нужна эта аннотация, чтобы просто включить функции весенней загрузки, такие как
@Autowire
и@MockBean
т. Д. Во время тестирования junit@SpringBootTest: эта аннотация используется для загрузки полного контекста приложения для сквозного тестирования интеграции
Вот статья с четкими примерами обоих сценариев Baeldung
источник
От spring.io :
Так что если вам не нужно все, что загружает Spring Boot для интеграционного теста, вам может не понадобиться
@SpringBootTest
источник
@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 и другие @… аннотации к тесту уже аннотированы.
источник