如何模拟超类的私有成员的方法调用?

时间:2019-07-06 01:37:04

标签: java mockito

我有一个扩展父类(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()调用的行上引发空指针错误。

0 个答案:

没有答案