@DynamicPropertySource
@DynamicPropertySource
是一个方法级别的注解,您可以使用它来注册动态属性,以添加到集成测试加载的ApplicationContext
的Environment
中的PropertySources
集合中。当您事先不知道属性的值时,动态属性非常有用 - 例如,如果属性由外部资源管理,比如由Testcontainers项目管理的容器。
以下示例演示了如何注册动态属性:
-
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 | 使用@DynamicPropertySource 注解一个static 方法。 |
2 | 接受一个DynamicPropertyRegistry 作为参数。 |
3 | 注册一个动态的server.port 属性,从服务器中惰性获取。 |
@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 | 使用@DynamicPropertySource 注解一个static 方法。 |
2 | 接受一个DynamicPropertyRegistry 作为参数。 |
3 | 注册一个动态的server.port 属性,从服务器中惰性获取。 |
查看使用动态属性源进行上下文配置以获取更多详细信息。