@TargetSE(valueSE={TYPESE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @RepeatableSE(valueSE=SpyBeans.class) public @interface SpyBean
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 アノテーション内に含めることができます。
MockitoPostProcessorpublic abstract StringSE name
public abstract MockReset reset
MockReset.AFTER で、各テストメソッドが呼び出されるとスパイが自動的にリセットされます。public abstract boolean proxyTargetAware
verify(mock) などの Mockito メソッドは、プロキシ自体ではなく、AOP 推奨の Bean の target を使用する必要があることを示します。false に設定した場合、Mockito メソッドを呼び出すときに AopTestUtils.getUltimateTargetObject(...) の結果を使用する必要がある場合があります。true、プロキシが直接使用されている場合は false Copyright © 2019 Pivotal Software, Inc.. All rights reserved.