@TargetSE(valueSE={TYPESE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @RepeatableSE(valueSE=MockBeans.class) public @interface MockBean
ApplicationContext
に追加するために使用できるアノテーション。クラスレベルのアノテーションとして、または @Configuration
クラスのフィールド、または @RunWith
SpringRunner
のテストクラスで使用できます。 モックは、型または bean name
で登録できます。型別に登録すると、コンテキスト内の一致する型(サブクラスを含む)の既存の単一の Bean がモックに置き換えられます。名前で登録すると、既存の Bean をモックによる交換の対象にすることができます。いずれの場合も、既存の Bean が定義されていない場合は、新しい Bean が追加されます。アプリケーションコンテキストには認識されているが Bean ではない依存関係(registered directly
など)は検出されず、モックされた Bean が既存の依存関係とともにコンテキストに追加されます。
@MockBean
がフィールドで使用され、アプリケーションコンテキストに登録されると、モックもフィールドに挿入されます。典型的な使用箇所は次のとおりです。
@RunWith(SpringRunner.class) public class ExampleTests { @MockBean private ExampleService service; @Autowired private UserOfService userOfService; @Test public void testUserOfService() { given(this.service.greet()).willReturn("Hello"); String actual = this.userOfService.makeUse(); assertEquals("Was: Hello", actual); } @Configuration @Import(UserOfService.class) // A @Component injected with ExampleService static class Config { } }リクエストされた型の Bean が複数ある場合、フィールドレベルで修飾子メタデータを指定する必要があります。
@RunWith(SpringRunner.class) public class ExampleTests { @MockBean @Qualifier("example") private ExampleService service; ... }
このアノテーションは @Repeatable
であり、Java 8 で作業する場合、または @MockBeans
アノテーション内に含まれる場合、複数回指定できます。
MockitoPostProcessor
修飾子と型 | オプションの要素と説明 |
---|---|
org.mockito.Answers | answer モックで使用する Answers 型。 |
ClassSE<?>[] | classes モックするクラス。 |
ClassSE<?>[] | extraInterfaces モックで宣言する必要がある追加のインターフェース。 |
StringSE | name 登録または置換する Bean の名前。 |
MockReset | reset モック Bean に適用するリセットモード。 |
boolean | serializable 生成されたモックが直列化可能な場合。 |
ClassSE<?>[] | value モックするクラス。 |
public abstract StringSE name
public abstract ClassSE<?>[] extraInterfaces
MockSettings.extraInterfaces(Class...)
を参照してください。public abstract org.mockito.Answers answer
Answers
型。public abstract boolean serializable
MockSettings.serializable()
を参照してください。public abstract MockReset reset
MockReset.AFTER
です。これは、各テストメソッドが呼び出された後にモックが自動的にリセットされることを意味します。