@ContextConfiguration

@ContextConfiguration 是一個可以應用於測試類的註解,用於配置元資料,該元資料決定了如何為整合測試載入和配置一個 ApplicationContext。具體來說,@ContextConfiguration 聲明瞭用於載入上下文的應用上下文資源 locations 或元件 classes

資源 locations 通常是類路徑中的 XML 配置檔案或 Groovy 指令碼,而元件 classes 通常是 @Configuration 類。然而,資源 locations 也可以引用檔案系統中的檔案和指令碼,並且元件 classes 可以是 @Component 類、@Service 類等。有關詳細資訊,請參閱元件類

以下示例展示了一個引用 XML 檔案的 @ContextConfiguration 註解

  • Java

  • Kotlin

@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
1 引用 XML 檔案。
@ContextConfiguration("/test-config.xml") (1)
class XmlApplicationContextTests {
	// class body...
}
1 引用 XML 檔案。

以下示例展示了一個引用類的 @ContextConfiguration 註解

  • Java

  • Kotlin

@ContextConfiguration(classes = TestConfig.class) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 引用類。
@ContextConfiguration(classes = [TestConfig::class]) (1)
class ConfigClassApplicationContextTests {
	// class body...
}
1 引用類。

作為宣告資源 locations 或元件 classes 的替代或補充,您可以使用 @ContextConfiguration 來宣告 ApplicationContextInitializer 類。以下示例展示了這種情況

  • Java

  • Kotlin

@ContextConfiguration(initializers = CustomContextInitializer.class) (1)
class ContextInitializerTests {
	// class body...
}
1 宣告初始化器類。
@ContextConfiguration(initializers = [CustomContextInitializer::class]) (1)
class ContextInitializerTests {
	// class body...
}
1 宣告初始化器類。

您也可以選擇使用 @ContextConfiguration 來宣告 ContextLoader 策略。然而,請注意,通常無需顯式配置 loader,因為預設 loader 支援 initializers 以及資源 locations 或元件 classes

以下示例同時使用了 location 和 loader

  • Java

  • Kotlin

@ContextConfiguration(locations = "/test-context.xml", loader = CustomContextLoader.class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
1 配置 location 和自定義 loader。
@ContextConfiguration("/test-context.xml", loader = CustomContextLoader::class) (1)
class CustomLoaderXmlApplicationContextTests {
	// class body...
}
1 配置 location 和自定義 loader。
@ContextConfiguration 支援繼承超類或封閉類宣告的資源 locations 或配置類,以及上下文初始化器。

有關詳細資訊,請參閱上下文管理@Nested 測試類配置@ContextConfiguration javadocs。