アノテーションインターフェース 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