如果我有:
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类。 因为它是抽象的,所以我用 ATest 类来扩展它。 还有其他字段,但它们受到保护,这是合理的。
我的问题是来自子类,我如何访问家长私有(private)字段,例如目标。
我混合使用了模拟(Mockito)和反射。
我也尝试过只使用反射而不扩展类。
最佳答案
这并不能直接回答您的问题,但是否可以通过某种方式行使父类的公共(public) api 来测试私有(private)字段状态?
如果你能做到这一点,那么就不需要反射(reflection),而且从长远来看,这可能更容易维护。
如果没有,那么您必须扩展该类并使用 relection 来获取私有(private)属性(property)的句柄。
查看此主题:
关于java - 如何更改旧单元测试的私有(private)抽象父字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024369/