Интеграционное тестирование в Spring: аннотации Spring Testing, @ActiveProfiles, @TestPropertySource, @DynamicPropertySource
@ActiveProfiles
@ActiveProfiles - это аннотация уровня класса, которая используется для объявления профилей определения bean-компонентов, которые должны быть активными при загрузке ApplicationContext для интеграционного теста.
В следующем примере показано, что dev профиль должен быть активен:
@ContextConfiguration
@ActiveProfiles("dev")
class DeveloperTests {
// тело класса...
}
В следующем примере показано, что должны быть активны и dev профиль, и integration профиль:
@ContextConfiguration
@ActiveProfiles({"dev", "integration"})
class DeveloperIntegrationTests {
// тело класса...
}
@ActiveProfiles обеспечивает поддержку наследования профилей определения активных компонентов, объявленных суперклассами по умолчанию. Вы также можете разрешить активные профили определения bean-компонентов программно, реализовав настраиваемый ActiveProfilesResolver и зарегистрировав его с помощью атрибута resolver у @ActiveProfiles.
@TestPropertySource
@TestPropertySource - это аннотация на уровне класса, которую вы можете использовать для настройки расположения файлов свойств и встроенных свойств, которые будут добавлены в набор PropertySources в среде для ApplicationContext, загруженного для интеграционного теста.
В следующем примере показано, как объявить файл свойств из пути к классам:
@ContextConfiguration
@TestPropertySource("/test.properties")
class MyIntegrationTests {
// тело класса...
}
В следующем примере показано, как объявить встроенные (inlined) свойства:
@ContextConfiguration
@TestPropertySource(properties = { "timezone = GMT", "port: 4242" })
class MyIntegrationTests {
// тело класса...
}
@DynamicPropertySource
@DynamicPropertySource - это аннотация на уровне метода, которую вы можете использовать для регистрации динамических свойств, которые будут добавлены к набору PropertySources в Environment для ApplicationContext, загруженного для интеграционного теста. Динамические свойства полезны, когда вы заранее не знаете значения свойств - например, если свойства управляются внешним ресурсом, например для контейнера, управляемого проектом Testcontainers.
В следующем примере показано, как зарегистрировать динамическое свойство:
@ContextConfiguration
class MyIntegrationTests {
static MyExternalServer server = // ...
@DynamicPropertySource
static void dynamicProperties(DynamicPropertyRegistry registry) {
registry.add("server.port", server::getPort);
}
// тесты ...
}
Читайте также:
- Интеграционное тестирование в Spring: аннотации Spring Testing
- Интеграционное тестирование в Spring: аннотации Spring Testing, @WebAppConfiguration, @ContextHierarchy
- Интеграционное тестирование в Spring: поддержка тестирования JDBC
Комментарии
Отправить комментарий