0

我的应用程序中有很多基于 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

4

1 回答 1

0

默认情况下,类上的注释不会被继承,除非它们的定义中有 @Inherited。

于 2014-01-23T09:37:37.817 回答