使用组件类进行上下文配置
通过使用组件类(参见基于Java的容器配置)为测试加载ApplicationContext
,您可以在测试类上使用@ContextConfiguration
注解,并配置classes
属性为包含对组件类引用的数组。以下示例展示了如何实现:
-
Java
-
Kotlin
@ExtendWith(SpringExtension.class)
// ApplicationContext将从AppConfig和TestConfig加载
@ContextConfiguration(classes = {AppConfig.class, TestConfig.class}) (1)
class MyTest {
// 类主体...
}
1 | 指定组件类。 |
@ExtendWith(SpringExtension::class)
// ApplicationContext将从AppConfig和TestConfig加载
@ContextConfiguration(classes = [AppConfig::class, TestConfig::class]) (1)
class MyTest {
// 类主体...
}
1 | 指定组件类。 |
组件类
术语“组件类”可以指以下任何内容:
查看 |
如果从@ContextConfiguration
注解中省略classes
属性,则TestContext框架会尝试检测默认配置类的存在。具体来说,AnnotationConfigContextLoader
和AnnotationConfigWebContextLoader
会检测满足@Configuration
javadoc中配置类实现要求的测试类的所有static
嵌套类。请注意,配置类的名称是任意的。此外,如果需要,测试类可以包含多个static
嵌套配置类。在以下示例中,OrderServiceTest
类声明了一个名为Config
的static
嵌套配置类,该类会自动用于加载测试类的ApplicationContext
:
-
Java
-
Kotlin
@SpringJUnitConfig (1)
// ApplicationContext将从静态嵌套的Config类加载
class OrderServiceTest {
@Configuration
static class Config {
// 此bean将被注入到OrderServiceTest类中
@Bean
OrderService orderService() {
OrderService orderService = new OrderServiceImpl();
// 设置属性等
return orderService;
}
}
@Autowired
OrderService orderService;
@Test
void testOrderService() {
// 测试orderService
}
}
1 | 从嵌套的Config 类加载配置信息。 |
@SpringJUnitConfig (1)
// ApplicationContext将从静态嵌套的Config类加载
class OrderServiceTest {
@Autowired
lateinit var orderService: OrderService
@Configuration
class Config {
// 此bean将被注入到OrderServiceTest类中
@Bean
fun orderService(): OrderService {
// 设置属性等
return OrderServiceImpl()
}
}
@Test
fun testOrderService() {
// 测试orderService
}
}
1 | 从嵌套的Config 类加载配置信息。 |