Интеграционное тестирование в Spring: TestContext Framework, SpringExtension для JUnit Jupiter

Spring TestContext Framework предлагает полную интеграцию со средой тестирования JUnit Jupiter, представленной в JUnit 5. Аннотируя тестовые классы с помощью @ExtendWith(SpringExtension.class), вы можете реализовать стандартные модульные и интеграционные тесты на основе JUnit Jupiter и одновременно воспользоваться преимуществами TestContext framework, такими как поддержка загрузки контекстов приложения, внедрение зависимостей тестовых экземпляров, выполнение транзакционного метода тестирования и т. д.

Кроме того, благодаря богатому API расширений в JUnit Jupiter Spring предоставляет следующие функции помимо набора функций, которые Spring поддерживает для JUnit 4 и TestNG:

  • Внедрение зависимостей для конструкторов тестов, методов тестирования и методов обратного вызова жизненного цикла теста.
  • Мощная поддержка выполнения условного теста на основе выражений SpEL, переменных среды, системных свойств и т. д.
  • Пользовательские составные аннотации, сочетающие аннотации из Spring и JUnit Jupiter.

В следующем листинге кода показано, как настроить тестовый класс для использования SpringExtension в сочетании с @ContextConfiguration:

// Указывает JUnit Jupiter расширить 
// тест с помощью поддержки Spring.
@ExtendWith(SpringExtension.class)
// Указывает Spring загрузить 
// ApplicationContext из TestConfig.class
@ContextConfiguration(classes = TestConfig.class)
class SimpleTests {

    @Test
    void testMethod() {
        // тестовая логика...
    }
}

Поскольку вы также можете использовать аннотации в JUnit 5 как метааннотации, Spring предоставляет составные аннотации @SpringJUnitConfig и @SpringJUnitWebConfig для упрощения настройки тестового ApplicationContext и JUnit Jupiter.

В следующем примере используется @SpringJUnitConfig, чтобы уменьшить объем конфигурации, использованной в предыдущем примере:

// Указывает Spring зарегистрировать 
// SpringExtension в JUnit Jupiter и 
// загружаем ApplicationContext из TestConfig.class
@SpringJUnitConfig(TestConfig.class)
class SimpleTests {

    @Test
    void testMethod() {
        // тестовая логика...
    }
}

Точно так же в следующем примере используется @SpringJUnitWebConfig для создания WebApplicationContext для использования с JUnit Jupiter:

// Указывает Spring зарегистрировать 
// SpringExtension в JUnit Jupiter 
// и загружаем WebApplicationContext из TestWebConfig.class
@SpringJUnitWebConfig(TestWebConfig.class)
class SimpleWebTests {

    @Test
    void testMethod() {
        // тестовая логика...
    }
}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки