アノテーションインターフェース MockitoSpyBean
@MockitoSpyBean
は、テストクラスで使用できるアノテーションであり、テストの ApplicationContext
内の Bean を、元の Bean インスタンスをラップする Mockito スパイでオーバーライドします。@MockitoSpyBean
は次のように適用できます。
- テストクラスまたはそのスーパークラスの非静的フィールド。
@Nested
テストクラスの包含クラス内の非静的フィールド、または@Nested
テストクラスの上位の型階層または包含クラス階層内の任意のクラス。- テストクラスの型レベル、またはテストクラスの上位の型階層内の任意のスーパークラスまたは実装されたインターフェース。
@Nested
テストクラスの包含クラスの型レベル、または@Nested
テストクラスの上位の型階層または包含クラス階層内の任意のクラスまたはインターフェース。
フィールドで @MockitoSpyBean
が宣言されている場合、スパイする Bean はアノテーション付きフィールドの型から推論されます。ApplicationContext
に複数の候補が存在する場合は、曖昧さを解消するために、フィールドに @Qualifier
アノテーションを宣言できます。@Qualifier
アノテーションがない場合、アノテーション付きフィールドの名前がフォールバック修飾子として使用されます。または、value
または name
属性を設定することで、スパイする Bean 名を明示的に指定できます。Bean 名が指定されている場合は、その名前のターゲット Bean がアプリケーションコンテキストに事前に登録されている必要があります。
@MockitoSpyBean
が型 レベルで宣言されている場合、スパイする Bean (または Bean) の型は、types
属性を介して指定する必要があります。ApplicationContext
に複数の候補が存在する場合は、name
属性を設定することで、スパイする Bean 名を明示的に指定できます。ただし、明示的な Bean name
が構成されている場合、types
属性には単一の型が含まれている必要があることに注意してください。
アプリケーションコンテキストに認識されているが Bean ではないコンポーネント (たとえば、解決可能な依存関係としてのコンポーネント registered directly
) に対しては、スパイを作成することはできません。
警告 : @MockitoSpyBean
を @ContextHierarchy
と組み合わせて使用すると、各 @MockitoSpyBean
がデフォルトですべてのコンテキスト階層レベルに適用されるため、望ましくない結果が生じる可能性があります。特定の @MockitoSpyBean
が単一のコンテキスト階層レベルに適用されるようにするには、contextName
を、設定された @ContextConfiguration
name
と一致するように設定してください。詳細と例については、@ContextHierarchy
の Javadoc を参照してください。
注意 : スパイできるのはシングルトン Bean のみです。非シングルトン Bean のスパイを作成しようとすると、例外が発生します。FactoryBean
のスパイを作成すると、FactoryBean
自体ではなく、FactoryBean
によって作成されたオブジェクトに対してスパイが作成されます。
@MockitoSpyBean
フィールドの可視性に制限はありません。このようなフィールドは、プロジェクトのニーズやコーディング方法に応じて、public
、protected
、パッケージプライベート (デフォルトの可視性)、または private
になります。
@MockitoSpyBean
フィールドと型レベルの @MockitoSpyBean
宣言は、デフォルトで、囲んでいるテストクラスから継承されます。詳細については、@NestedTestConfiguration
を参照してください。
@MockitoSpyBean
は、カスタム合成アノテーションを作成するためのメタアノテーションとして使用できます。たとえば、テストスイート全体で再利用できる単一のアノテーションで共通のスパイ構成を定義することができます。@MockitoSpyBean
は、型レベルで繰り返し可能なSEアノテーションとして使用することもできます。たとえば、name
で複数の Bean をスパイすることができます。
- 導入:
- 6.2
- 作成者:
- Simon Basl é , Sam Brannen
- 関連事項:
オプション要素の概要
オプション要素
要素の詳細
value
name
のエイリアス。他の属性が必要ない場合に使用することを目的としています (例:
@MockitoSpyBean("customBeanName")
)。- 関連事項:
- デフォルト:
- ""
name
スパイする Bean の名前。指定しない場合は、監視する Bean は、構成された
types
またはアノテーション付きフィールドの型に従って選択され、必要に応じて修飾子が考慮されます。詳細については、クラスレベルのドキュメントを参照してください。- 関連事項:
- デフォルト:
- ""
types
ClassSE<?>[] typesスパイする 1 つ以上の型。デフォルトはなしです。
指定された各型により、スパイが作成され、
ApplicationContext
に登録されます。フィールドでアノテーションを使用する場合は、型を省略する必要があります。
@MockitoSpyBean
がname
も定義する場合、この属性には 1 つの値のみを含めることができます。- 戻り値:
- スパイする型
- 導入:
- 6.2.3
- デフォルト:
- {}
contextName
StringSE contextNameこの@MockitoSpyBean
を適用するコンテキスト階層レベルの名前。デフォルトでは空の文字列に設定され、この
@MockitoSpyBean
をすべてのアプリケーションコンテキストに適用する必要があることを示します。コンテキスト名が設定されている場合、
@ContextConfiguration(name=...)
を介して設定された名前と一致する必要があります。- 導入:
- 6.2.6
- 関連事項:
- デフォルト:
- ""
reset
MockReset resetスパイされた Bean に適用するリセットモード。デフォルトは
MockReset.AFTER
です。これは、各テストメソッドが呼び出された後にスパイが自動的にリセットされることを意味します。- 戻り値:
- リセットモード
- デフォルト:
- AFTER