2016-03-24 6 views
3

は、私はそうのような親のテストクラスがあるとします。Springでは、ContextConfiguration(...)はその親@ContextConfigurationから継承していますか?

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

その後、私は私がSpring 3.2.3 name annotation attributeを追加したい子クラスを持っています。

私はまだ親からすべてのコンテキスト設定を取得したいと思いますが、それが実現するかどうかはわかりません。

私の質問は:SpringではContextConfiguration(...)は親@ContextConfigurationから継承していますか?

答えて

1

@ContextConfigurationは、そのままの状態での継承をサポートします。

@ContextConfigurationにはinheritLocationsというプロパティがあります。デフォルトはtrueで、テストスーパークラスのリソース位置または注釈クラスを継承する必要があるかどうかを示します。真

inheritLocations =:これは注釈付きクラスはテストスーパークラスで定義されたリソースの場所や注釈付きクラスを継承することを意味します。具体的には、与えられたテストクラスのリソースロケーションまたはアノテートされたクラスは、テストスーパークラスによって定義されたリソースロケーションまたはアノテートされたクラスのリストに追加されます。したがって、サブクラスには、リソースの場所または注釈付きクラスのリストを拡張するオプションがあります。

inheritLocationsがfalseに設定されている場合、注釈付きクラスのリソースロケーションまたは注釈付きクラスは、スーパークラスによって定義されたすべてのリソースロケーションまたは注釈付きクラスをシャドーして効果的に置き換えます。

注釈付きクラスを使用する次の例では、ExtendedTestのApplicationContextが、BaseConfigおよびExtendedConfig構成クラスから順にロードされます。したがって、ExtendedConfigで定義されたBeanは、BaseConfigで定義されたBeanよりも優先されます。

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

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