@DynamicPropertySource

@DynamicPropertySource 是一个注释,可以应用于需要在集成测试类中注册 dynamic 属性以添加到 ApplicationContextPropertySources 中的方法,后者是为集成测试加载的。当您不了解属性值时,动态属性非常有用 - 例如,如果属性是由外部资源(例如由 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`属性,以便从服务器中延迟检索。
Kotlin
@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 ...
}
4 使用 `@DynamicPropertySource`注释 `static`方法。
5 接受 `DynamicPropertyRegistry`作为参数。
6 注册一个动态 `server.port`属性,以便从服务器中延迟检索。

有关进一步的详细信息,请参见 Context Configuration with Dynamic Property Sources