Context Configuration with Component Classes
如需通过使用组件类(请参阅 Java-based container configuration)加载 `ApplicationContext`用于您的测试,您可以使用 `@ContextConfiguration`注释您的测试类,并使用包含组件类引用的数组配置 `classes`属性。以下示例展示了如何执行此操作:
- Java
-
@ExtendWith(SpringExtension.class) // ApplicationContext will be loaded from AppConfig and TestConfig @ContextConfiguration(classes = {AppConfig.class, TestConfig.class}) (1) class MyTest { // class body... }
1 | Specifying component classes.
|
2 | Specifying component classes. |
Component Classes
术语“
有关组件类的配置和语义的更多信息,请参阅 javadoc |
如果您从 @ContextConfiguration`注释中省略 `classes`属性,TestContext 框架将尝试检测默认配置类的存在。具体来说,`AnnotationConfigContextLoader`和 `AnnotationConfigWebContextLoader`检测符合配置类实现要求(如 javadoc `@Configuration
中指定)的测试类的所有 static`嵌套类。请注意,配置类的名称是任意的。此外,测试类可以包含多个 `static`嵌套配置类(如果需要)。在以下示例中,`OrderServiceTest`类声明了一个命名的 `Config`嵌套配置类 `static
,该配置类自动用于为测试类加载 ApplicationContext
:
- Java
-
@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 类中加载配置信息。
|
2 | 从嵌套的 Config 类中加载配置信息。 |