Интеграционное тестирование в 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() {
// тестовая логика...
}
}
Читайте также:
- Интеграционное тестирование в Spring: TestContext Framework, Spring JUnit 4 Runner
- Интеграционное тестирование в Spring: TestContext Framework, Spring JUnit 4 Rules
- Интеграционное тестирование в Spring: TestContext Framework, классы поддержки JUnit 4
Комментарии
Отправить комментарий