2016-11-10 259 views
1

私はサービスを模擬するためにmockitoを使っています。Mockitoで親クラスにモックを挿入するには?

親クラスにモックを挿入するにはどうしたらいいですか?

サンプル:

public abstract class Parent(){ 

    @Mock 
    Message message; 

} 

public class MyTest() extends Parent{ 

    @InjectMocks 
    MyService myService //MyService has an instance of Message 

    //When I put @Mock Message here it works 
} 

私はParent滞在中のメッセージこの解決するnull

+0

モックは、コンストラクタを介して注入できます。 DIを行っている場合、コンストラクタインジェクションを介して依存関係を取得するためにクラスを構築してください – Nkosi

+0

どのmockitoのバージョンを使用していますか? – SpaceTrucker

+0

私が使用しているバージョンは:1.10.19 – Lucas

答えて

1

二つの方法私のテストを実行すると:

1)あなたが中@Before方法でMockitoAnnotations.initMocks(this)を使用する必要がありますあなたの親クラス。

私のために、次の作品:

public abstract class Parent { 
    @Mock 
    Message message; 

    @Before 
    public void initMocks() { 
     MockitoAnnotations.initMocks(this); 
    } 
} 

public class MyTest extends Parent { 
    @InjectMocks 
    MyService myService = new MyService(); //MyService has an instance of Message 
    ... 
} 

2)クラス定義の上@RunWith(MockitoJUnitRunner.class)を使用する場合は、これは親クラスで行わなければなりません。

@RunWith(MockitoJUnitRunner.class) 
public class Parent { 
... 

注宣言していることParentおよびMyTestクラスの@Mockは、挿入されたオブジェクトをnullにします。だから、あなたはこれを宣言したい場所を選ぶ必要があります。

+0

どちらも私のために働いた..ありがとう – Lucas

関連する問題