アノテーションインターフェース 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
フィールドの可視性に制限はありません。このようなフィールドは、プロジェクトのニーズやコーディング方法に応じて、public
、protected
、パッケージプライベート (デフォルトの可視性)、または private
になります。
@MockitoBean
フィールドと型レベルの @MockitoBean
宣言は、デフォルトで、囲んでいるテストクラスから継承されます。詳細については、@NestedTestConfiguration
を参照してください。
@MockitoBean
は、カスタム合成アノテーションを作成するためのメタアノテーションとして使用できます。たとえば、テストスイート全体で再利用できる単一のアノテーションで共通のモック構成を定義することができます。@MockitoBean
は、型レベルで繰り返し可能なSEアノテーションとしても使用できます。たとえば、name
で複数の Bean をモックすることができます。
- 導入:
- 6.2
- 作成者:
- Simon Basl é , Sam Brannen
- 関連事項:
要素の詳細
value
name
のエイリアス。他の属性が必要ない場合に使用することを目的としています (例:
@MockitoBean("customBeanName")
)。- 関連事項:
- デフォルト:
- ""
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