我使用mockit来模拟我的服务。
如何在父类中注入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
有两种解决方法:
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)
,那么这必须在Parent类中完成:
@RunWith(MockitoJUnitRunner.class)
public class Parent {
...
注意,在Parent
和MyTest
类中声明@Mock
将导致注入的对象为空。所以你需要选择在哪里声明