在Spring中,ContextConfiguration(...)是否从其父@ContextConfiguration继承?

时间:2016-03-24 00:43:14

标签: java spring spring-mvc junit

假设我有一个像我这样的父测试类:

@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { MyCustomTestConfig.class })
public class MyParentTestclass {

然后我有一个子课程,我想添加Spring 3.2.3 name annotation attribute

@ContextConfiguration(name=MyName)
public class MyChildTestClass extends MyParentTestClass {

我仍然希望从父级获取所有上下文配置 - 但我不确定它是否会通过。

我的问题是:在Spring中,ContextConfiguration(...)是否继承自其父@ContextConfiguration?

1 个答案:

答案 0 :(得分:3)

@ContextConfiguration 支持开箱即用的继承。

@ContextConfiguration有一个名为inheritLocations的属性,默认为true,并指示是否应继承测试超类中的资源位置或带注释的类。

  

inheritLocations = true :这意味着带注释的类将继承测试超类定义的资源位置或带注释的类。具体而言,给定测试类的资源位置或带注释的类将附加到由测试超类定义的资源位置或带注释的类的列表中。因此,子类可以选择扩展资源位置列表或带注释的类。

     

如果inheritLocations设置为false,则带注释的类的资源位置或带注释的类将隐藏并有效地替换由超类定义的任何资源位置或带注释的类。

在以下使用带注释的类的示例中,将按顺序从BaseConfig和ExtendedConfig配置类加载ExtendedTest的ApplicationContext。因此,ExtendedConfig中定义的Bean可能会覆盖BaseConfig中定义的Bean。

 @ContextConfiguration(classes=BaseConfig.class)
 public class BaseTest {
     // ...
 }

 @ContextConfiguration(classes=ExtendedConfig.class)
 public class ExtendedTest extends BaseTest {
     // ...
 }