アノテーションインターフェース ContextConfiguration
@ContextConfiguration は、統合テスト用に ApplicationContext をロードおよび構成する方法を決定するために使用されるクラスレベルのメタデータを定義します。サポートされているリソース型
コンテキストローダーは、パスベースのリソースの場所 (通常は XML 構成ファイル) またはクラスベースのリソースのいずれかをサポートすることを選択できます。あるいは、コンテキストローダーは、パスベースとクラスベースのリソースを同時にサポートすることを選択できます。@ContextConfiguration を使用して、パスベースのリソースの場所 (locations() または value() 属性を使用) またはコンポーネントクラス (classes() 属性を使用) を宣言できます。ただし、SmartContextLoader のほとんどの実装では、1 つのリソース型しかサポートされないことに注意してください。パスベースのリソースの場所は、XML 構成ファイルまたは Groovy スクリプトのいずれかです (Groovy がクラスパスにある場合)。もちろん、サードパーティのフレームワークは、追加の種類のパスベースのリソースをサポートすることを選択する場合があります。
コンポーネントクラス
コンポーネントクラスという用語は、次のいずれかを指します。
@Configurationアノテーションが付けられたクラス- コンポーネント (つまり、
@Component、@Service、@Repositoryなどのアノテーションが付けられたクラスです。) jakarta.injectアノテーションが付けられた JSR-330 準拠のクラス@Bean-methods を含むすべてのクラス- Spring コンポーネント(つまり、
ApplicationContextの Spring Bean)として登録することを目的とするその他のクラス。潜在的に Spring アノテーションを使用せずに単一のコンストラクターの自動オートワイヤーを利用します。
ApplicationContext に登録されるため、そのような Bean は他の Bean またはテストクラスのインスタンスに注入できます。 コンポーネントクラスの設定とセマンティクスに関する詳細については、@Configuration および @Bean の Javadoc を参照してください。
このアノテーションは、カスタム構成アノテーションを作成するためのメタアノテーションとして使用することができます。
Spring Framework 5.3 以降、このアノテーションはデフォルトでそれを囲むテストクラスから継承されます。詳細については、@NestedTestConfiguration を参照してください。
オプション要素の概要
オプション要素修飾子と型オプションの要素説明ClassSE<?>[]ApplicationContextのロードに使用するコンポーネントクラス。booleanテストスーパークラスおよびそれを囲むクラスからのコンテキスト初期化子を継承する必要があるかどうか。booleanテストスーパークラスおよびエンクロージングクラスからのリソースの場所またはコンポーネントクラスを継承するかどうか。ClassSE<? extends ApplicationContextInitializer<?>>[]ConfigurableApplicationContextの初期化に使用するアプリケーションコンテキスト初期化子クラス。ClassSE<? extends ContextLoader>StringSE[]ApplicationContextのロードに使用するリソースの場所。この構成で表されるコンテキスト階層レベルの名前。StringSE[]locations()のエイリアス。
要素の詳細
value
locations()のエイリアス。この属性は、
locations()と組み合わせて使用することはできませんが、locations()の代わりに使用することができます。- 導入:
- 3.0
- 関連事項:
- デフォルト:
- {}
locations
ApplicationContextのロードに使用するリソースの場所。特に相対パスの場合に、実行時に場所がどのように解釈されるかについての詳細は、
AbstractContextLoader.modifyLocations()の Javadoc を確認してください。また、指定されていない場合に使用されるデフォルトの場所の詳細については、AbstractContextLoader.generateDefaultLocations()のドキュメントを参照してください。前述のデフォルトルールは、
locationsが設定されている場合に実行時に使用される効果的なデフォルト実装であるGenericXmlContextLoaderやGenericGroovyXmlContextLoaderなどの標準AbstractContextLoaderサブクラスにのみ適用されることに注意してください。デフォルトローダーの詳細については、loader()のドキュメントを参照してください。この属性は、
value()と組み合わせて使用することはできませんが、value()の代わりに使用することができます。- 導入:
- 2.5
- 関連事項:
- デフォルト:
- {}
classes
ClassSE<?>[] classesApplicationContextのロードに使用するコンポーネントクラス。コンポーネントクラスが指定されていない場合のデフォルト構成クラスの検出方法の詳細については、
AnnotationConfigContextLoader.detectDefaultConfigurationClasses()の javadoc を確認してください。デフォルトローダーの詳細については、loader()のドキュメントを参照してください。- デフォルト:
- {}
initializers
ClassSE<? extends ApplicationContextInitializer<?>>[] initializersConfigurableApplicationContextの初期化に使用するアプリケーションコンテキスト初期化子クラス。宣言された各イニシャライザーによってサポートされる具体的な
ConfigurableApplicationContext型は、使用中のSmartContextLoaderによって作成されたApplicationContextの型と互換性がなければなりません。SmartContextLoader実装は通常、Spring のOrderedインターフェースが実装されているかどうか、@Orderアノテーションが存在するかどうかを検出し、呼び出す前にインスタンスをソートします。- 導入:
- 3.2
- 関連事項:
- デフォルト:
- {}
inheritLocations
boolean inheritLocationsテストスーパークラスおよびエンクロージングクラスからのリソースの場所またはコンポーネントクラスを継承するかどうか。デフォルト値は
trueです。これは、アノテーション付きのテストクラスが、テストスーパークラスとそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスを継承することを意味します。具体的には、特定のテストクラスのリソースの場所またはコンポーネントクラスが、テストスーパークラスおよびそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスのリストに追加されます。サブクラスとネストされたクラスには、リソースの場所またはコンポーネントクラスのリストを拡張するオプションがあります。inheritLocationsがfalseに設定されている場合、アノテーション付きテストクラスのリソースの場所またはコンポーネントクラスは、スーパークラスおよびそれを囲むクラスによって定義されたリソースの場所またはコンポーネントクラスをシャドウイングして効果的に置き換えます。パスベースのリソースロケーションを使用する次の例では、
ExtendedTestのApplicationContextが"base-context.xml"および"extended-context.xml"からこの順序でロードされます。"extended-context.xml"で定義された Bean は、"base-context.xml"で定義された Bean をオーバーライドできます。@ContextConfiguration("base-context.xml") public class BaseTest { // ... } @ContextConfiguration("extended-context.xml") public class ExtendedTest extends BaseTest { // ... }同様に、コンポーネントクラスを使用する次の例では、
ExtendedTestのApplicationContextがBaseConfigおよびExtendedConfig構成クラスからこの順序でロードされます。ExtendedConfigで定義された Bean は、BaseConfigで定義された Bean をオーバーライドできます。@ContextConfiguration(classes=BaseConfig.class) public class BaseTest { // ... } @ContextConfiguration(classes=ExtendedConfig.class) public class ExtendedTest extends BaseTest { // ... }- 導入:
- 2.5
- デフォルト:
- true
inheritInitializers
boolean inheritInitializersテストスーパークラスおよびそれを囲むクラスからのコンテキスト初期化子を継承する必要があるかどうか。デフォルト値は
trueです。これは、アノテーション付きのテストクラスが、テストスーパークラスとそれを囲むクラスによって定義されたアプリケーションコンテキスト初期化子を継承することを意味します。具体的には、特定のテストクラスの初期化子は、テストスーパークラスとそれを囲むクラスによって定義された初期化子のセットに追加されます。サブクラスとネストされたクラスには、初期化子のセットを拡張するオプションがあります。inheritInitializersがfalseに設定されている場合、アノテーション付きテストクラスの初期化子はシャドウになり、スーパークラスとそれを囲むクラスによって定義された初期化子を効果的に置き換えます。次の例では、
ExtendedTestのApplicationContextは、BaseInitializerおよびExtendedInitializerを使用して初期化されます。ただし、イニシャライザーが呼び出される順序は、イニシャライザーがOrderedを実装しているか、@Orderでアノテーションが付けられているかによって異なることに注意してください。@ContextConfiguration(initializers = BaseInitializer.class) public class BaseTest { // ... } @ContextConfiguration(initializers = ExtendedInitializer.class) public class ExtendedTest extends BaseTest { // ... }- 導入:
- 3.2
- デフォルト:
- true
loader
ClassSE<? extends ContextLoader> loaderApplicationContextのロードに使用するSmartContextLoader(またはContextLoader)の型。指定しない場合、ローダーは、
@ContextConfigurationでアノテーションが付けられた、またはメタアノテーションが付けられ、明示的なローダーを指定する最初のスーパークラスまたはそれを囲むクラスから継承されます。型階層またはそれを囲むクラス階層に明示的なローダーが指定されていない場合は、代わりにデフォルトのローダーが使用されます。実行時に選択されるデフォルトの具象実装は、
@WebAppConfigurationの有無に応じてDelegatingSmartContextLoaderまたはWebDelegatingSmartContextLoaderになります。さまざまな具象SmartContextLoadersのデフォルトの動作の詳細については、Javadoc でAbstractContextLoader、GenericXmlContextLoader、GenericGroovyXmlContextLoader、AnnotationConfigContextLoader、GenericXmlWebContextLoader、GenericGroovyXmlWebContextLoader、AnnotationConfigWebContextLoaderを確認してください。- 導入:
- 2.5
- デフォルト:
- org.springframework.test.context.ContextLoader.class
name
StringSE nameこの構成で表されるコンテキスト階層レベルの名前。指定しない場合、名前は、階層内で宣言されたすべてのコンテキスト内の数値レベルに基づいて推測されます。
この属性は、
@ContextHierarchyを使用して構成されたテストクラス階層または囲みクラス階層内で使用される場合にのみ適用されます。この場合、この名前は、スーパークラスまたは囲みで定義された階層レベルの同じ名前の構成とこの構成をマージまたはオーバーライドするために使用できます。クラス。詳細については、@ContextHierarchyの Javadoc を参照してください。- 導入:
- 3.2.2
- デフォルト:
- ""