我正在为一个具有 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
}
}
原文由 Wildchild 发布,翻译遵循 CC BY-SA 4.0 许可协议
Mockito 不能执行如此棘手的注入,因为它不是注入框架。因此,您需要重构代码以使其更易于测试。使用构造函数注入很容易完成:
在这种情况下,您必须手动处理模拟和注入: