«1. Введение

В этой быстрой статье мы рассмотрим новые аннотации @SpringJUnitConfig и @SpringJUnitWebConfig, доступные в Spring 5.

Эти аннотации представляют собой композицию аннотаций JUnit 5 и Spring 5, которые делают создание тестов проще и быстрее.

2. @SpringJUnitConfig

@SpringJUnitConfig объединяет эти две аннотации:

    @ExtendWith(SpringExtension.class) из JUnit 5 для запуска теста с классом SpringExtension и @ContextConfiguration из Spring Testing для загрузки контекста Spring ~ ~~ Давайте создадим тест и применим эту аннотацию на практике:

Обратите внимание, что, в отличие от @ContextConfiguration, классы конфигурации объявляются с использованием атрибута value. Однако расположение ресурсов должно быть указано с помощью атрибута location.

@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
public class SpringJUnitConfigIntegrationTest {

    @Configuration
    static class Config {}
}

Теперь мы можем убедиться, что контекст Spring действительно был загружен:

Наконец, здесь у нас есть код, эквивалентный @SpringJUnitConfig(SpringJUnitConfigTest.Config.class):

@Autowired
private ApplicationContext applicationContext;

@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(applicationContext);
}

3. @SpringJUnitWebConfig

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)

@SpringJUnitWebConfig сочетает в себе те же аннотации @SpringJUnitConfig, а также @WebAppConfiguration из тестирования Spring — для загрузки WebApplicationContext.

Давайте посмотрим, как работает эта аннотация:

Как и @SpringJUnitConfig, классы конфигурации указываются в атрибуте value, а любые ресурсы указываются с использованием атрибута location.

@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {

    @Configuration
    static class Config {
    }
}

Кроме того, атрибут value @WebAppConfiguration теперь должен указываться с использованием атрибута resourcePath. По умолчанию для этого атрибута установлено значение «src/main/webapp».

Давайте теперь проверим, действительно ли был загружен WebApplicationContext:

Опять же, здесь у нас есть эквивалентный код без использования @SpringJUnitWebConfig:

@Autowired
private WebApplicationContext webAppContext;

@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(webAppContext);
}

4. Заключение

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)

В этом кратком руководстве мы показал, как использовать недавно представленные аннотации @SpringJUnitConfig и @SpringJUnitWebConfig в Spring 5.

Полный исходный код примеров доступен на GitHub.

«