【发布时间】:2017-10-11 02:50:51
【问题描述】:
我正在为具有 2 级依赖注入的类编写测试用例。我对 1 级依赖注入对象使用 @Spy 注释,我想模拟第 2 级注入。但是,我在第二级不断收到空指针异常。有什么方法可以将模拟注入@Spy 对象?
public class CarTestCase{
@Mock
private Configuration configuration;
@Spy
private Engine engine;
@InjectMocks
private Car car;
@Test
public void test(){
Mockito.when(configuration.getProperties("")).return("Something");
car.drive();
}
}
public class Car{
@Inject
private Engine engine;
public void drive(){
engine.start();
}
}
public class Engine{
@Inject
private Configuration configuration;
public void start(){
configuration.getProperties(); // null pointer exception
}
}
【问题讨论】:
-
你用
MockitoAnnotations.initmocks(this)初始化了模拟 -
不,但这与这个问题有什么关系?
-
@Wildchild 很好,这使得 Mockito 可以对带有
@Spy、@Mock、@InjectMocks等注释的对象执行应有的操作,因此如果您在构造car之后执行此操作@ 模拟应该是注入.... -
我尝试将 MockitoAnnotations.initmocks(this) 放在测试函数的开头,但它仍然不起作用
-
您是否也尝试使用 @InjectMocks 注释引擎?
标签: java unit-testing dependency-injection mockito