|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
使用组件类的上下文配置
要为测试加载ApplicationContext(使用组件类,参见
基于Java的容器配置),您可以为测试类添加@ContextConfiguration注解,
并通过classes属性配置包含组件类引用的数组。
以下示例演示了如何操作:
-
Java
-
Kotlin
@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from AppConfig and TestConfig
@ContextConfiguration(classes = {AppConfig.class, TestConfig.class}) (1)
class MyTest {
// class body...
}
| 1 | 指定组件类。 |
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from AppConfig and TestConfig
@ContextConfiguration(classes = [AppConfig::class, TestConfig::class]) (1)
class MyTest {
// class body...
}
| 1 | 指定组件类。 |
|
组件类
术语“组件类”可指以下任意一种:
请参阅
|
如果您在@ContextConfiguration注解中省略classes属性,TestContext框架会尝试检测默认配置类的存在。
具体来说,AnnotationConfigContextLoader和AnnotationConfigWebContextLoader
会检测测试类中所有符合配置类实现要求的static嵌套类,
如@Configuration的javadoc所规定。
请注意配置类的名称是任意的。此外,如果需要,
一个测试类可以包含多个static嵌套配置类。
在以下示例中,OrderServiceTest类声明了一个名为Config的static嵌套配置类,
该配置类将自动用于加载测试类的ApplicationContext:
-
Java
-
Kotlin
@SpringJUnitConfig (1)
// ApplicationContext will be loaded from the static nested Config class
class OrderServiceTest {
@Configuration
static class Config {
// this bean will be injected into the OrderServiceTest class
@Bean
OrderService orderService() {
OrderService orderService = new OrderServiceImpl();
// set properties, etc.
return orderService;
}
}
@Autowired
OrderService orderService;
@Test
void testOrderService() {
// test the orderService
}
}
| 1 | 从嵌套的Config类加载配置信息。 |
@SpringJUnitConfig (1)
// ApplicationContext will be loaded from the nested Config class
class OrderServiceTest {
@Autowired
lateinit var orderService: OrderService
@Configuration
class Config {
// this bean will be injected into the OrderServiceTest class
@Bean
fun orderService(): OrderService {
// set properties, etc.
return OrderServiceImpl()
}
}
@Test
fun testOrderService() {
// test the orderService
}
}
| 1 | 从嵌套的Config类加载配置信息。 |