@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 プロパティを登録します。

詳細については、動的プロパティソースを使用したコンテキスト構成を参照してください。