@TargetSE(valueSE=TYPESE) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @InheritedSE public @interface TestExecutionListeners
TestExecutionListeners
は、どの TestExecutionListeners
を TestContextManager
に登録するかを構成するためのクラスレベルのメタデータを定義します。@TestExecutionListeners
は、特定のテストクラス、そのサブクラス、ネストされたクラスのリスナーを登録するために使用されます。リスナーをグローバルに登録する場合は、TestExecutionListener
で説明されている自動検出メカニズムを介して登録する必要があります。
このアノテーションは、カスタム合成アノテーションを作成するためのメタアノテーションとして使用できます。Spring Framework 5.3 の時点で、このアノテーションはデフォルトで囲んでいるテストクラスから継承されます。詳細については、@NestedTestConfiguration
を参照してください。
TestExecutionListener
実装への切り替え @TestExecutionListeners
でアノテーションが付けられたクラスを継承し、リスナーのデフォルトセットを使用するように切り替える必要がある場合は、次のようにクラスにアノテーションを付けることができます。
// Switch to default listeners @TestExecutionListeners(listeners = {}, inheritListeners = false, mergeMode = MERGE_WITH_DEFAULTS) class MyTests extends BaseTests { // ... }
TestExecutionListener
, TestContextManager
, ContextConfiguration
修飾子と型 | オプションの要素と説明 |
---|---|
boolean | inheritListeners スーパークラスおよびそれを囲むクラスからの TestExecutionListeners を継承する必要があるかどうか。 |
ClassSE<? extends TestExecutionListener>[] | listeners |
TestExecutionListeners.MergeMode | mergeMode スーパークラスまたはそれを囲むクラスからリスナーを継承しないクラスで @TestExecutionListeners が宣言されている場合に使用するマージモード。 |
ClassSE<? extends TestExecutionListener>[] | value listeners() のエイリアス。 |
@AliasFor(value="listeners") public abstract ClassSE<? extends TestExecutionListener>[] value
listeners()
のエイリアス。 この属性は、listeners()
と組み合わせて使用することはできませんが、listeners()
の代わりに使用することができます。
@AliasFor(value="value") public abstract ClassSE<? extends TestExecutionListener>[] listeners
TestContextManager
に登録する TestExecutionListeners
。 この属性は、value()
と組み合わせて使用することはできませんが、value()
の代わりに使用することができます。
ServletTestExecutionListener
, DirtiesContextBeforeModesTestExecutionListener
, ApplicationEventsTestExecutionListener
, DependencyInjectionTestExecutionListener
, DirtiesContextTestExecutionListener
, TransactionalTestExecutionListener
, SqlScriptsTestExecutionListener
, EventPublishingTestExecutionListener
public abstract boolean inheritListeners
TestExecutionListeners
を継承する必要があるかどうか。 デフォルト値は true
です。これは、アノテーション付きクラスが、アノテーション付きスーパークラスまたはそれを囲むクラスによって定義されたリスナーを継承することを意味します。具体的には、アノテーション付きクラスのリスナーは、アノテーション付きスーパークラスまたはそれを囲むクラスによって定義されたリスナーのリストに追加されます。サブクラスとネストされたクラスには、リスナーのリストを拡張するオプションがあります。次の例では、AbstractBaseTest
は DependencyInjectionTestExecutionListener
および DirtiesContextTestExecutionListener
で構成されます。一方、TransactionalTest
は、DependencyInjectionTestExecutionListener
、 DirtiesContextTestExecutionListener
、TransactionalTestExecutionListener
の順に構成されます。
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class }) public abstract class AbstractBaseTest { // ... } @TestExecutionListeners(TransactionalTestExecutionListener.class) public class TransactionalTest extends AbstractBaseTest { // ... }
inheritListeners
が false
に設定されている場合、アノテーション付きクラスのリスナーはシャドウになり、スーパークラスまたはそれを囲むクラスによって定義されたリスナーを効果的に置き換えます。
public abstract TestExecutionListeners.MergeMode mergeMode
@TestExecutionListeners
が宣言されている場合に使用するマージモード。 ローカルで宣言されたリスナーをデフォルトのリスナーとマージするために、MERGE_WITH_DEFAULTS
に設定できます。
リスナーがスーパークラスまたはそれを囲むクラスから継承されている場合、このモードは無視されます。
下位互換性のために、デフォルトは REPLACE_DEFAULTS
です。
TestExecutionListeners.MergeMode