如何在父类中注入mock



我使用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 {
...

注意,在ParentMyTest类中声明@Mock将导致注入的对象为空。所以你需要选择在哪里声明

相关内容

  • 没有找到相关文章

最新更新