@DynamicPropertySource

@DynamicPropertySource 是一个方法级别的注解,你可以使用它来注册 动态 属性,这些属性将被添加到为集成测试加载的 ApplicationContextEnvironment 中的 PropertySources 集中。当你无法预先知道属性值时,动态属性非常有用——例如,如果属性由外部资源管理,如由 Testcontainers 项目管理的容器。

以下示例演示了如何注册动态属性:

  • Java

@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 属性,以便从服务器延迟检索。

有关更多详细信息,请参见 具有动态属性源的上下文配置