对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

使用组件类的上下文配置

要为测试加载ApplicationContext(使用组件类,参见 基于Java的容器配置),您可以为测试类添加@ContextConfiguration注解, 并通过classes属性配置包含组件类引用的数组。 以下示例演示了如何操作:spring-doc.cadn.net.cn

@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 指定组件类。
组件类

术语“组件类”可指以下任意一种:spring-doc.cadn.net.cn

请参阅 @Configuration@Bean 的javadoc文档, 以获取关于组件类配置和语义的更多信息,特别要注意 @Bean 精简模式(Lite Mode)的讨论。spring-doc.cadn.net.cn

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

@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类加载配置信息。