Перейти к основному содержимому

Аннотации SpringJUnitConfig и SpringJUnitWebConfig в Spring 5

· 2 мин. чтения

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 .