我正在使用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
答案 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 {
...
请注意,在@Mock
和Parent
类中声明MyTest
将导致注入的对象为null。所以你必须选择你想要宣告的地方。