如果我有:
public abstract class A {
private Object target; // <- **IMPORTANT**
protected Blah blah // ... Not directly relevant to the question,
protected Blah blah2 // they are just a potential reason to extend
// test class ...?
public int func (){
int hello = Integer.parseInt(target.Fields.want2Change);
return hello;
}
}
我想测试A类。因为它是抽象的,所以我用Class test来扩展它。还有其他领域,但它们受到保护,这是合理的。
我的问题是来自子类,我如何访问父 PRIVATE字段,如target。
我正在使用嘲笑(Mockito)和反射的混合。
我也试过只是使用反射和不扩展类。
这并不能直接回答你的问题,但是有可能通过行使父类的公共api来测试私有字段状态吗?
如果你能做到这一点,那么就不需要反射,这可能更易于长期维护。
如果没有,则必须扩展类并使用r选择来获取私有属性的句柄。
查看这个线程:
在Java中通过反射访问私有继承字段