2016-11-10 637 views
1

我正在使用mockito來模擬我的服務。如何使用Mockito在父類中注入模擬?

我該如何在父類中注入mock?

樣品:

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

mocks可以通過構造函數注入。如果做DI然後體系結構通過構造器注入獲得依賴關係的類 – Nkosi

+0

您正在使用哪個mockito版本? – SpaceTrucker

+0

我使用的版本是:1.10.19 – Lucas

回答

1

兩種方式來解決這個問題:

1)你必須在使用MockitoAnnotations.initMocks(this)@Before方法你的父母班。

對我來說,以下工作:

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 { 
... 

注意,聲明ParentMyTest類中的@Mock都會導致注入的對象爲空。所以你必須選擇你想要聲明的地方。

+0

兩者都爲我工作..謝謝 – Lucas