アノテーションインターフェース SpyBean
@TargetSE({TYPESE,FIELDSE})
@RetentionSE(RUNTIMESE)
@DocumentedSE
@RepeatableSE(SpyBeans.class)
public @interface SpyBean
Mockito スパイを Spring
ApplicationContext
に適用するために使用できるアノテーション。クラスレベルのアノテーションとして、または @Configuration
クラス、または @RunWith
である SpringRunner
であるテストクラスのフィールドで使用できます。 スパイは、型または bean name
によって適用できます。一致する型(サブクラスを含む)のコンテキスト内のすべての Bean は、スパイでラップされます。既存の Bean が定義されていない場合は、新しい Bean が追加されます。アプリケーションコンテキストには認識されているが Bean ではない依存関係(registered directly
など)は検出されず、スパイされた Bean が既存の依存関係とともにコンテキストに追加されます。
@SpyBean
がフィールドで使用され、アプリケーションコンテキストに登録されると、スパイもフィールドに挿入されます。一般的な使用箇所は次のとおりです。
@RunWith(SpringRunner.class) public class ExampleTests { @SpyBean private ExampleService service; @Autowired private UserOfService userOfService; @Test public void testUserOfService() { String actual = this.userOfService.makeUse(); assertEquals("Was: Hello", actual); verify(this.service).greet(); } @Configuration @Import(UserOfService.class) // A @Component injected with ExampleService static class Config { } }リクエストされた型の Bean が複数ある場合、フィールドレベルで修飾子メタデータを指定する必要があります。
@RunWith(SpringRunner.class) public class ExampleTests { @SpyBean @Qualifier("example") private ExampleService service; ... }
このアノテーションは @Repeatable
であり、Java 8 での作業時に複数回指定するか、@SpyBeans
アノテーション内に含めることができます。
- 導入:
- 1.4.0
- 作成者:
- Phillip Webb
- 関連事項:
オプション要素のサマリー
要素の詳細
name
StringSE nameスパイする Bean の名前。指定しない場合、名前が生成されるか、スパイが既存の Bean の場合は、既存の名前が使用されます。- 戻り値:
- Bean の名前
- デフォルト:
- ""
value
- 戻り値:
- スパイするクラス
- デフォルト:
- {}
classes
スパイするクラス。ここで指定された各クラスにより、スパイが適用されます。アノテーションがフィールドで使用される場合、クラスは省略できます。@SpyBean
がname
も定義する場合、この属性には単一の値のみを含めることができます。これが唯一の指定された属性である場合、代わりに
value
エイリアスの使用を検討してください。- 戻り値:
- スパイするクラス
- デフォルト:
- {}
reset
MockReset resetスパイされた Bean に適用するリセットモード。デフォルトはMockReset.AFTER
で、各テストメソッドが呼び出されるとスパイが自動的にリセットされます。- 戻り値:
- リセットモード
- デフォルト:
- AFTER
proxyTargetAware
boolean proxyTargetAwareverify(mock)
などの Mockito メソッドは、プロキシ自体ではなく、AOP 推奨の Bean のtarget
を使用する必要があることを示します。false
に設定した場合、Mockito メソッドを呼び出すときにAopTestUtils.getUltimateTargetObject(...)
の結果を使用する必要がある場合があります。- 戻り値:
- AOP アドバイス Bean のターゲットが使用されている場合は
true
、プロキシが直接使用されている場合はfalse
- デフォルト:
- true