我的应用程序中有很多基于 Unitils 的集成测试类,它们使用@SpringApplicationContext
(来自不同模块的不同 spring xmls)。为了减少创建的 spring 上下文的数量,我们计划创建一个基测试类,并仅从该基类初始化 spring 上下文,并进行所有其他测试以扩展该基类。
基类:
com.org.module1.mypack;
@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml" }) 公共抽象类 BaseTest{ ... }
更改前的子类:
com.org.module1.mypack.performance;
@SpringApplicationContext({ "spring-module4.xml" }) 公共类 ChildTest 扩展 BaseTest{ .. }
更改后的基类:
com.org.module1.mypack;
@SpringApplicationContext({ "spring-module1.xml", "spring-module2.xml", "spring-module3.xml", "spring-module4.xml" }) 公共抽象类 BaseTest{ ... }
更改后的子类:
com.org.module1.mypack.performance;
//@SpringApplicationContext({ "spring-module4.xml" }) 公共类 ChildTest 扩展 BaseTest{ .. }
现在我收到以下错误消息,并且未创建我的上下文:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.org.module5.prepare.MyBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=myBean)}
当 spring-module4.xml 在子类中时,上下文被正常创建,所有测试都照常执行。
注意:所有 spring xml 文件都在 src/main/resources 中,除了 spring-module4.xml 在 src/test/resources