1. Введение
В этой быстрой статье мы рассмотрим новые аннотации @SpringJUnitConfig
и @SpringJUnitWebConfig,
доступные в Spring 5.
Эти аннотации представляют собой композицию аннотаций JUnit 5 и Spring 5 , которые упрощают и ускоряют создание тестов.
2. @SpringJUnitConfig
@SpringJUnitConfig
объединяет эти две аннотации:
@ExtendWith(SpringExtension.class)
из JUnit 5 для запуска теста склассом SpringExtension
и@ContextConfiguration
из Spring Testing для загрузки контекста Spring
Давайте создадим тест и воспользуемся этой аннотацией на практике:
@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
public class SpringJUnitConfigIntegrationTest {
@Configuration
static class Config {}
}
Обратите внимание, что, в отличие от @ContextConfiguration
, классы конфигурации объявляются с использованием атрибута value .
Однако расположение ресурсов должно быть указано с помощью атрибута location .
Теперь мы можем убедиться, что контекст Spring действительно был загружен:
@Autowired
private ApplicationContext applicationContext;
@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
assertNotNull(applicationContext);
}
Наконец, здесь у нас есть эквивалентный код @SpringJUnitConfig(SpringJUnitConfigTest.Config.class):
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)
3. @SpringJUnitWebConfig
@SpringJUnitWebConfig
сочетает в себе те же аннотации @SpringJUnitConfig,
а также @WebAppConfiguration
из тестирования Spring — для загрузки WebApplicationContext
.
Давайте посмотрим, как работает эта аннотация:
@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {
@Configuration
static class Config {
}
}
Как и @SpringJUnitConfig
, классы конфигурации указываются в атрибуте value
, а любые ресурсы указываются с использованием атрибута location .
Кроме того, атрибут value
@WebAppConfiguration
теперь должен указываться с использованием атрибута resourcePath .
По умолчанию для этого атрибута установлено значение «src/main/webapp»
.
Теперь давайте проверим, действительно ли был загружен WebApplicationContext
:
@Autowired
private WebApplicationContext webAppContext;
@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
assertNotNull(webAppContext);
}
Опять же, здесь у нас есть эквивалентный код без использования @SpringJUnitWebConfig
:
@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)
4. Вывод
В этом кратком руководстве мы показали, как использовать недавно представленные аннотации @SpringJUnitConfig
и @SpringJUnitWebConfig
в Spring 5.
Полный исходный код примеров доступен на GitHub .