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


@TargetSE({FIELDSE,TYPESE}) @RetentionSE(RUNTIMESE) @DocumentedSE @RepeatableSE(MockitoBeans.class) @BeanOverride(org.springframework.test.context.bean.override.mockito.MockitoBeanOverrideProcessor.class) public @interface MockitoBean
@MockitoBean は、テストクラスで使用して、テストの ApplicationContext 内の Bean を Mockito モックでオーバーライドできるアノテーションです。

@MockitoBean は次のように適用できます。

  • テストクラスまたはそのスーパークラスの非静的フィールド。
  • @Nested テストクラスの包含クラス内の非静的フィールド、または @Nested テストクラスの上位の型階層または包含クラス階層内の任意のクラス。
  • テストクラスの型レベル、またはテストクラスの上位の型階層内の任意のスーパークラスまたは実装されたインターフェース。
  • @Nested テストクラスの包含クラスの型レベル、または @Nested テストクラスの上位の型階層または包含クラス階層内の任意のクラスまたはインターフェース。

フィールドで @MockitoBean が宣言されている場合、モックする Bean はアノテーション付きフィールドの型から推論されます。ApplicationContext に複数の候補が存在する場合は、曖昧さを解消するために、フィールドに @Qualifier アノテーションを宣言できます。@Qualifier アノテーションがない場合、アノテーション付きフィールドの名前がフォールバック修飾子として使用されます。または、value または name 属性を設定することで、モックする Bean 名を明示的に指定することもできます。

@MockitoBean が型 レベルで宣言されている場合、モックする Bean (または Bean) の型は、types 属性を介して指定する必要があります。ApplicationContext に複数の候補が存在する場合は、name 属性を設定することで、モックする Bean 名を明示的に指定できます。ただし、明示的な Bean name が構成されている場合、types 属性には単一の型が含まれている必要があることに注意してください。

対応する Bean が存在しない場合は、Bean が作成されます。ただし、対応する Bean が存在しない場合にテストを失敗させたい場合は、enforceOverride 属性を true (たとえば、@MockitoBean(enforceOverride = true)) に設定できます。

アプリケーションコンテキストに認識されているが Bean ではない依存関係 ( 直接登録されているものなど) は検出されず、既存の依存関係とともにモック Bean がコンテキストに追加されます。

警告 @MockitoBean を @ContextHierarchy と組み合わせて使用すると、各 @MockitoBean がデフォルトですべてのコンテキスト階層レベルに適用されるため、望ましくない結果が生じる可能性があります。特定の @MockitoBean が単一のコンテキスト階層レベルに適用されるようにするには、contextName を、設定された @ContextConfiguration name と一致するように設定してください。詳細と例については、@ContextHierarchy の Javadoc を参照してください。

注意 : シングルトン Bean のみをモックできます。非シングルトン Bean をモックしようとすると例外が発生します。FactoryBean によって作成された Bean をモックする場合、FactoryBean は FactoryBean によって作成されたオブジェクトの型のシングルトンモックに置き換えられます。

@MockitoBean フィールドの可視性に制限はありません。このようなフィールドは、プロジェクトのニーズやコーディング方法に応じて、publicprotected、パッケージプライベート (デフォルトの可視性)、または private になります。

@MockitoBean フィールドと型レベルの @MockitoBean 宣言は、デフォルトで、囲んでいるテストクラスから継承されます。詳細については、@NestedTestConfiguration を参照してください。

@MockitoBean は、カスタム合成アノテーションを作成するためのメタアノテーションとして使用できます。たとえば、テストスイート全体で再利用できる単一のアノテーションで共通のモック構成を定義することができます。@MockitoBean は、型レベルで繰り返し可能なSEアノテーションとしても使用できます。たとえば、name で複数の Bean をモックすることができます。

導入:
6.2
作成者:
Simon Basl é , Sam Brannen
関連事項:
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    org.mockito.Answers
    モックで使用する Answers 型。
    この @MockitoBean を適用するコンテキスト階層レベルの名前。
    boolean
    モックされる Bean の存在を要求するかどうか。
    ClassSE<?>[]
    モックによっても宣言する必要がある追加のインターフェース。
    モックする Bean の名前。
    モックに適用するリセットモード。
    boolean
    生成されたモックが直列化可能かどうか。
    ClassSE<?>[]
    モックする 1 つ以上の型。
    name のエイリアス。
  • 要素の詳細

    • value

      @AliasFor("name") StringSE value
      name のエイリアス。

      他の属性が必要ない場合に使用することを目的としています (例: @MockitoBean("customBeanName"))。

      関連事項:
      デフォルト:
      ""
    • name

      @AliasFor("value") StringSE name
      モックする Bean の名前。

      指定しない場合は、構成された types またはアノテーション付きフィールドの型に応じて、必要に応じて修飾子を考慮して、モックする Bean が選択されます。詳細については、クラスレベルのドキュメントを参照してください。

      関連事項:
      デフォルト:
      ""
    • types

      ClassSE<?>[] types
      モックする 1 つ以上の型。

      デフォルトはなしです。

      指定された各型により、モックが作成され、ApplicationContext に登録されます。

      フィールドでアノテーションを使用する場合は、型を省略する必要があります。

      @MockitoBean が name も定義する場合、この属性には 1 つの値のみを含めることができます。

      戻り値:
      嘲笑する型
      導入:
      6.2.2
      デフォルト:
      {}
    • contextName

      StringSE contextName
      この @MockitoBean を適用するコンテキスト階層レベルの名前。

      デフォルトでは空の文字列に設定され、この @MockitoBean をすべてのアプリケーションコンテキストに適用する必要があることを示します。

      コンテキスト名が設定されている場合、@ContextConfiguration(name=...) を介して設定された名前と一致する必要があります。

      導入:
      6.2.6
      関連事項:
      デフォルト:
      ""
    • extraInterfaces

      ClassSE<?>[] extraInterfaces
      モックによっても宣言する必要がある追加のインターフェース。

      デフォルトはなしです。

      戻り値:
      追加のインターフェース
      関連事項:
      • MockSettings.extraInterfaces(Class...)
      デフォルト:
      {}
    • answers

      org.mockito.Answers answers
      モックで使用する Answers 型。

      デフォルトは Answers.RETURNS_DEFAULTS です。

      戻り値:
      回答型
      デフォルト:
      RETURNS_DEFAULTS
    • serializable

      boolean serializable
      生成されたモックが直列化可能かどうか。

      デフォルトは false です。

      戻り値:
      モックが直列化可能な場合は true 
      関連事項:
      • MockSettings.serializable()
      デフォルト:
      false
    • reset

      MockReset reset
      モックに適用するリセットモード。

      デフォルトは MockReset.AFTER です。これは、各テストメソッドが呼び出された後にモックが自動的にリセットされることを意味します。

      戻り値:
      リセットモード
      デフォルト:
      AFTER
    • enforceOverride

      boolean enforceOverride
      モックされる Bean の存在を要求するかどうか。

      デフォルトは false です。つまり、対応する Bean が存在しない場合にモックが作成されます。

      対応する Bean が存在しない場合に例外をスローするには、true に設定します。

      関連事項:
      デフォルト:
      false