Рубрики
Без рубрики

Аннотации Spring JUnit Config и Spring JUnit Web Config в Spring 5

Узнайте, как использовать составные аннотации Spring JUnit Config и Spring JUnit Web Config в Spring 5.

Автор оригинала: Marcos Lopez Gonzalez.

1. введение

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

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

2. @SpringJUnitConfig

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

  • @@ExtendWith(SpringExtension.class) из JUnit 5 для запуска теста с расширением Spring класс и
  • @ContextConfiguration из весеннего тестирования для загрузки весеннего контекста

Давайте создадим тест и используем эту аннотацию на практике:

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

    @Configuration
    static class Config {}
}

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

Теперь мы можем убедиться, что контекст 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 testing – для загрузки WebApplicationContext .

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

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

    @Configuration
    static class Config {
    }
}

Например, @SpringJUnitConfig , классы конфигурации входят в атрибут value |, а любые ресурсы задаются с помощью атрибута locations .

Кроме того, атрибут value атрибута @WebAppConfiguration теперь должен быть указан с помощью атрибута resource Path . По умолчанию этому атрибуту присвоено значение “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 .