跳到主要内容
版本:7.0.3

使用组件类进行上下文配置

Hunyuan 7b 中英对照 Context Configuration with Component Classes

要使用组件类来加载测试所需的ApplicationContext(请参阅基于Java的容器配置),你可以在测试类上添加@ContextConfiguration注解,并通过classes属性配置一个包含组件类引用的数组。以下示例展示了如何操作:

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from AppConfig and TestConfig
@ContextConfiguration(classes = {AppConfig.class, TestConfig.class}) 1
class MyTest {
// class body...
}
  • 指定组件类。

提示

组件类

“组件类”一词可以指以下任何一种:

  • @Configuration注解的类。

  • 组件(即被@Component@Service@Repository或其他类型注解注解的类)。

  • 遵循JSR-330标准的类,并且带有jakartaInject注解。

  • 包含@Bean方法的任何类。

  • 任何其他旨在作为Spring组件注册的类(即在ApplicationContext中的Spring bean),可能利用不使用Spring注解的单一构造函数的自动装配功能。

有关组件类的配置和语义的更多信息,请参阅@Configuration@Bean的Javadoc文档,特别注意对@Bean Lite模式的讨论。

如果从@ContextConfiguration注解中省略classes属性,TestContext框架会尝试检测是否存在默认配置类。具体来说,AnnotationConfigContextLoaderAnnotationConfigWebContextLoader会检测测试类中所有符合配置类实现要求的static嵌套类,这些要求在@Configuration的javadoc中有明确规定。需要注意的是,配置类的名称是任意的。此外,如果需要,一个测试类可以包含多个static嵌套配置类。在下面的例子中,OrderServiceTest类声明了一个名为Configstatic嵌套配置类,该配置类会自动用于为测试类加载ApplicationContext

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

}
  • 从嵌套的 Config 类中加载配置信息。