Groovy スクリプトを使用したコンテキスト設定

Groovy Bean 定義 DSL を使用する Groovy スクリプトを使用して、テスト用に ApplicationContext をロードするには、@ContextConfiguration でテストクラスにアノテーションを付け、Groovy スクリプトのリソースの場所を含む配列で locations または value 属性を構成します。Groovy スクリプトのリソースルックアップセマンティクスは、XML 構成ファイルについて説明したものと同じです。

Groovy スクリプトサポートの有効化
Groovy がクラスパス上にある場合、Groovy スクリプトを使用して Spring に ApplicationContext をロードするためのサポート TestContext フレームワークは自動的に有効になります。

次の例は、Groovy 構成ファイルを指定する方法を示しています。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from "/AppConfig.groovy" and
// "/TestConfig.groovy" in the root of the classpath
@ContextConfiguration({"/AppConfig.groovy", "/TestConfig.Groovy"}) (1)
class MyTest {
	// class body...
}
1Groovy 構成ファイルの場所を指定します。
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from "/AppConfig.groovy" and
// "/TestConfig.groovy" in the root of the classpath
@ContextConfiguration("/AppConfig.groovy", "/TestConfig.Groovy") (1)
class MyTest {
	// class body...
}
1Groovy 構成ファイルの場所を指定します。

@ContextConfiguration アノテーションから locations 属性と value 属性の両方を省略すると、TestContext フレームワークはデフォルトの Groovy スクリプトを検出しようとします。具体的には、GenericGroovyXmlContextLoader および GenericGroovyXmlWebContextLoader は、テストクラスの名前に基づいてデフォルトの場所を検出します。クラスの名前が com.example.MyTest の場合、Groovy コンテキストローダーは "classpath:com/example/MyTestContext.groovy" からアプリケーションコンテキストをロードします。次の例は、デフォルトの使用方法を示しています。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from
// "classpath:com/example/MyTestContext.groovy"
@ContextConfiguration (1)
class MyTest {
	// class body...
}
1 デフォルトの場所から構成をロードしています。
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from
// "classpath:com/example/MyTestContext.groovy"
@ContextConfiguration (1)
class MyTest {
	// class body...
}
1 デフォルトの場所から構成をロードしています。
XML 構成と Groovy スクリプトを同時に宣言する

@ContextConfiguration の locations または value 属性を使用して、XML 構成ファイルと Groovy スクリプトの両方を同時に宣言できます。構成されたリソースの場所へのパスが .xml で終わる場合、XmlBeanDefinitionReader を使用してロードされます。それ以外の場合は、GroovyBeanDefinitionReader を使用してロードされます。

次のリストは、統合テストで両方を組み合わせる方法を示しています。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from
// "/app-config.xml" and "/TestConfig.groovy"
@ContextConfiguration({ "/app-config.xml", "/TestConfig.groovy" })
class MyTest {
	// class body...
}
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from
// "/app-config.xml" and "/TestConfig.groovy"
@ContextConfiguration("/app-config.xml", "/TestConfig.groovy")
class MyTest {
	// class body...
}