如何用Mockito在父类中注入mock?

时间:2016-11-10 11:31:16

标签: unit-testing mockito

我正在使用mockito来模拟我的服务..

如何在父类中注入模拟?

样品:

SELECT FirstName, LastName  
FROM Users 
Where FirstName = 'Something'
AND (@Role is null or @Role = '' or Role = @Role)

当我运行测试时,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

1 个答案:

答案 0 :(得分: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),那么必须在Parent类中完成:

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

请注意,在@MockParent类中声明MyTest将导致注入的对象为null。所以你必须选择你想要宣告的地方。