@DynamicPropertySource
@DynamicPropertySource
is a method-level annotation that you can use to register
dynamic properties to be added to the set of PropertySources
in the Environment
for
an ApplicationContext
loaded for an integration test. Dynamic properties are useful
when you do not know the value of the properties upfront – for example, if the properties
are managed by an external resource such as for a container managed by the
Testcontainers project.
The following example demonstrates how to register a dynamic property:
-
Java
-
Kotlin
@ContextConfiguration
class MyIntegrationTests {
static MyExternalServer server = // ...
@DynamicPropertySource (1)
static void dynamicProperties(DynamicPropertyRegistry registry) { (2)
registry.add("server.port", server::getPort); (3)
}
// tests ...
}
1 | Annotate a static method with @DynamicPropertySource . |
2 | Accept a DynamicPropertyRegistry as an argument. |
3 | Register a dynamic server.port property to be retrieved lazily from the server. |
@ContextConfiguration
class MyIntegrationTests {
companion object {
@JvmStatic
val server: MyExternalServer = // ...
@DynamicPropertySource (1)
@JvmStatic
fun dynamicProperties(registry: DynamicPropertyRegistry) { (2)
registry.add("server.port", server::getPort) (3)
}
}
// tests ...
}
1 | Annotate a static method with @DynamicPropertySource . |
2 | Accept a DynamicPropertyRegistry as an argument. |
3 | Register a dynamic server.port property to be retrieved lazily from the server. |
See Context Configuration with Dynamic Property Sources for further details.