@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
アノテーション内に含めることができます。
MockitoPostProcessor
public 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.