クラス SpringExtension
- 実装済みのインターフェース一覧:
AfterAllCallback, AfterEachCallback, AfterTestExecutionCallback, BeforeAllCallback, BeforeEachCallback, BeforeTestExecutionCallback, Extension, ParameterResolver, TestInstancePostProcessor, TestInstantiationAwareExtension
SpringExtension は、Spring、TestContext、フレームワークを JUnit Jupiter テストフレームワークに統合します。 この拡張機能を使用するには、JUnit Jupiter ベースのテストクラスに @ExtendWith(SpringExtension.class)、@SpringJUnitConfig、@SpringJUnitWebConfig をアノテーションするか、@ExtendWith(SpringExtension.class) (@SpringBootTest など)でメタアノテーションされたその他のアノテーションをアノテーションします。
Spring Framework 7.0 では、SpringExtension はテストメソッドスコープの ExtensionContext を使用するように構成されており、@Nested テストクラス階層内の現在のテストメソッドの ApplicationContext からフィールドとコンストラクターへの一貫した依存性注入が可能になります。ただし、サードパーティの TestExecutionListener がテストメソッドスコープの拡張コンテキストに関連付けられたセマンティクスと互換性がない場合、または開発者がテストクラススコープのセマンティクスに切り替えたい場合は、トップレベルのテストクラスに @SpringExtensionConfig(useTestClassScopedExtensionContext = true) をアノテーションとして付けるか、"spring.test.extension.context.scope" プロパティを test_class に設定することで、SpringExtension を構成できます。明示的な @SpringExtensionConfig 宣言は、グローバルに構成されたプロパティを上書きすることに注意してください。さらに、SpringExtension は、JUnit Jupiter の @TestInstance(Lifecycle.PER_CLASS) セマンティクスを使用するように構成されたテストクラスに対して、常にテストクラススコープの ExtensionContext を使用します。
注意 : このクラスには JUnit Jupiter 6.0 以上が必要です。
- 導入:
- 5.0
- 作成者:
- Sam Brannen, Simon Basl é
- 関連事項:
ネストされたクラスの概要
ネストされたクラス修飾子と型クラス説明static enumフィールド概要
フィールド修飾子と型フィールド説明static final StringSESpringExtensionのデフォルトのSpringExtension.ExtensionContextScopeを構成するために使用される JVM システムプロパティ: "spring.test.extension.context.scope"。コンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明voidafterAll(ExtensionContext context) TestContextManager.afterTestClass()へのデリゲート。voidafterEach(ExtensionContext context) voidafterTestExecution(ExtensionContext context) voidbeforeAll(ExtensionContext context) TestContextManager.beforeTestClass()へのデリゲート。voidbeforeEach(ExtensionContext context) voidbeforeTestExecution(ExtensionContext context) static ApplicationContextgetApplicationContext(ExtensionContext context) 指定されたExtensionContextに関連付けられたApplicationContextを取得します。voidpostProcessTestInstance(ObjectSE testInstance, ExtensionContext context) resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) booleansupportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
フィールドの詳細
EXTENSION_CONTEXT_SCOPE_PROPERTY_NAME
SpringExtensionのデフォルトのSpringExtension.ExtensionContextScopeを構成するために使用される JVM システムプロパティ: "spring.test.extension.context.scope"。許容される値には、
ExtensionContextScopeで定義されている列挙定数が含まれます(大文字小文字は区別されません)。例: コマンドラインから次の JVM システムプロパティを指定することで、デフォルト値をSpringExtension.ExtensionContextScope.TEST_CLASSに変更できます。-Dspring.test.extension.context.scope=test_class
プロパティが設定されていない場合は、
SpringExtension.ExtensionContextScope.TEST_METHODのセマンティクスが適用されます。ただし、@SpringExtensionConfigがこのプロパティよりも優先されることに注意してください。あるいは、
SpringPropertiesメカニズムまたは JUnit プラットフォーム構成パラメーターとして構成することもできます。- 導入:
- 7.0.7
- 関連事項:
コンストラクターの詳細
SpringExtension
public SpringExtension()
方法の詳細
getTestInstantiationExtensionContextScope
public TestInstantiationAwareExtension.ExtensionContextScope getTestInstantiationExtensionContextScope(ExtensionContext rootContext) ExtensionContextScope.TEST_METHODを返します。これは、
@SpringExtensionConfigアノテーションを使用してローカルでオーバーライドするか、"spring.test.extension.context.scope" プロパティを使用してグローバルでオーバーライドできます。詳細については、クラスレベルの Javadoc を参照してください。- 次で指定:
- インターフェース
TestInstantiationAwareExtension内のgetTestInstantiationExtensionContextScope - 導入:
- 7.0
- 関連事項:
beforeAll
TestContextManager.beforeTestClass()へのデリゲート。- 次で指定:
- インターフェース
BeforeAllCallback内のbeforeAll - 例外:
ExceptionSE
afterAll
TestContextManager.afterTestClass()へのデリゲート。- 次で指定:
- インターフェース
AfterAllCallback内のafterAll - 例外:
ExceptionSE
postProcessTestInstance
public void postProcessTestInstance(ObjectSE testInstance, ExtensionContext context) throws ExceptionSE TestContextManager.prepareTestInstance(Object)へのデリゲート。このメソッドは、テストメソッドとテストライフサイクルメソッドに
@Autowiredアノテーションが付けられていないことも検証します。- 次で指定:
- インターフェース
TestInstancePostProcessor内のpostProcessTestInstance - 例外:
ExceptionSE
beforeEach
- 次で指定:
- インターフェース
BeforeEachCallback内のbeforeEach - 例外:
ExceptionSE
beforeTestExecution
- 次で指定:
- インターフェース
BeforeTestExecutionCallback内のbeforeTestExecution - 例外:
ExceptionSE
afterTestExecution
- 次で指定:
- インターフェース
AfterTestExecutionCallback内のafterTestExecution - 例外:
ExceptionSE
afterEach
- 次で指定:
- インターフェース
AfterEachCallback内のafterEach - 例外:
ExceptionSE
supportsParameter
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) 提供されたParameterContextのParameterSE の値をテストのApplicationContextからオートワイヤーする必要があるかどうかを決定します。次のいずれかの条件が
trueの場合、パラメーターは自動書き込み可能と見なされます。- 宣言している実行可能ファイルは
ConstructorSE であり、TestConstructorUtils.isAutowirableConstructor(Executable, PropertyProvider)はtrueを返します。isAutowirableConstructor()は、ルックアップをExtensionContext.getConfigurationParameter(String)に委譲するフォールバックPropertyProviderで呼び出されることに注意してください。 - パラメーターは型
ApplicationContextまたはそのサブ型です。 - パラメーターは型
ApplicationEventsまたはそのサブ型です。 ParameterResolutionDelegate.isAutowirable(Parameter, int)はtrueを返します。
このメソッドは、
ApplicationContextをロードしたり、アプリケーションコンテキストに一致する候補 Bean が実際に含まれていたりすることを検証しません。これを行うと、アプリケーションコンテキストが早すぎるタイミングで、または不必要にロードされる可能性があるためです。警告 : テストクラス
Constructorに@Autowiredのアノテーションが付けられているか、自動的に自動書き込み可能(@TestConstructorを参照)の場合、Spring がコンストラクター内のすべてのパラメーターを解決する責任を負います。その結果、他の登録済みParameterResolverはパラメーターを解決できなくなります。- 次で指定:
- インターフェース
ParameterResolver内のsupportsParameter - 関連事項:
- 宣言している実行可能ファイルは
resolveParameter
public @Nullable ObjectSE resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) テストのApplicationContextから対応する依存関係を取得することにより、提供されたParameterContextのParameterSE の値を解決します。ParameterResolutionDelegate.resolveDependency(Parameter, int, Class, AutowireCapableBeanFactory)へのデリゲート。- 次で指定:
- インターフェース
ParameterResolver内のresolveParameter - 関連事項:
getApplicationContext
指定されたExtensionContextに関連付けられたApplicationContextを取得します。注意 : Spring Framework 7.0 時点では、指定された
ExtensionContextは適切にスコープされていない可能性があります。詳細については、クラスレベルの Javadoc を参照してください。警告 : このメソッドを呼び出すと、対応する
ApplicationContextが確実にロードされます。アプリケーションコンテキストの積極的なロードが望ましくない場合は、このメソッドを使用しないでください。例:supportsParameter(ParameterContext, ExtensionContext)は意図的にこのメソッドを呼び出さないため、このメソッドを呼び出すと、アプリケーションコンテキストが早すぎるタイミングで、あるいは不必要にロードされる可能性があります。- パラメーター:
context- 現在のExtensionContext(非null)- 戻り値:
- アプリケーションコンテキスト
- 例外:
IllegalStateExceptionSE- アプリケーションコンテキストの取得中にエラーが発生した場合- 関連事項: