我有一个扩展父类(A类)的类(B类)。父类具有一个公共方法(方法X),该方法调用其私有成员字段之一的方法(字段f>方法Y)。我正在尝试编写单元测试以测试类B的方法。但是,我必须模拟对类B继承的方法X的调用。但是,当尝试调用方法Y时,它给了我空指针错误在方法X中。我不确定如何模拟类B中的字段f。有人可以帮我吗?
我正在使用Mockito编写测试。字段f是自动接线的。我想避免向文件中添加新代码,因为这不是我的代码。我确实尝试过:
@Mock
field f;
doReturn(someReturnValue).when(f).Y();
但是不会被调用。我感觉是因为B类中没有字段f。
当前设置如下:
class A{
@Autowired
private Object f;
public void X(){
Map<String, Object> map = new HashMap<>();
map.putAll(f.Y()); // NPE thrown here
}
};
class B extends A{
};
尝试在单元测试中模拟字段f会在进行f.Y()调用的行上引发空指针错误。