アノテーションインターフェース TestExecutionListeners


@TargetSE(TYPESE) @RetentionSE(RUNTIMESE) @DocumentedSE @InheritedSE public @interface TestExecutionListeners
TestExecutionListeners は、どの TestExecutionListenersTestContextManager に登録するかを構成するためのクラスレベルのメタデータを定義します。

@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 {
     // ...
 }
 
導入:
2.5
作成者:
Sam Brannen
関連事項:
  • 要素の詳細

    • value

      @AliasFor("listeners") ClassSE<? extends TestExecutionListener>[] value
      listeners() のエイリアス。

      この属性は、listeners() と組み合わせて使用することはできませんが、listeners() の代わりに使用することができます。

      デフォルト:
      {}
    • listeners

      @AliasFor("value") ClassSE<? extends TestExecutionListener>[] listeners
      TestContextManager に登録する TestExecutionListeners

      この属性は、value() と組み合わせて使用することはできませんが、value() の代わりに使用することができます。

      関連事項:
      デフォルト:
      {}
    • inheritListeners

      boolean inheritListeners
      スーパークラスおよびそれを囲むクラスからの TestExecutionListeners継承する必要があるかどうか。

      デフォルト値は true です。これは、アノテーション付きクラスが、アノテーション付きスーパークラスまたはそれを囲むクラスによって定義されたリスナーを継承することを意味します。具体的には、アノテーション付きクラスのリスナーは、アノテーション付きスーパークラスまたはそれを囲むクラスによって定義されたリスナーのリストに追加されます。サブクラスとネストされたクラスには、リスナーのリストを拡張するオプションがあります。次の例では、AbstractBaseTest は DependencyInjectionTestExecutionListener および DirtiesContextTestExecutionListener で構成されます。一方、TransactionalTest は、DependencyInjectionTestExecutionListener DirtiesContextTestExecutionListenerTransactionalTestExecutionListener の順に構成されます。

       @TestExecutionListeners({
           DependencyInjectionTestExecutionListener.class,
           DirtiesContextTestExecutionListener.class
       })
       public abstract class AbstractBaseTest {
               // ...
       }
      
       @TestExecutionListeners(TransactionalTestExecutionListener.class)
       public class TransactionalTest extends AbstractBaseTest {
               // ...
       }

      inheritListeners が false に設定されている場合、アノテーション付きクラスのリスナーはシャドウになり、スーパークラスまたはそれを囲むクラスによって定義されたリスナーを効果的に置き換えます。

      デフォルト:
      true
    • mergeMode

      スーパークラスまたはそれを囲むクラスからリスナーを継承しないクラスで @TestExecutionListeners が宣言されている場合に使用するマージモード

      ローカルで宣言されたリスナーをデフォルトのリスナーとマージするために、MERGE_WITH_DEFAULTS に設定できます。

      リスナーがスーパークラスまたはそれを囲むクラスから継承されている場合、このモードは無視されます。

      下位互換性のために、デフォルトは REPLACE_DEFAULTS です。

      導入:
      4.1
      関連事項:
      デフォルト:
      REPLACE_DEFAULTS