@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。