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

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