如何更改传统单元测试的私有抽象父字段

时间:2014-07-29 20:27:42

标签: java unit-testing reflection parent-child legacy

如果我有:

 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)和反射。

我也试过使用反射而不是扩展类。

1 个答案:

答案 0 :(得分:1)

这不直接回答你的问题,但有可能通过运用父类的公共api来测试私有字段的状态吗?

如果你能做到这一点,那么就不需要反思,这可能会更长久地维持。

如果没有,则必须扩展该类并使用r选举来获取私有财产的处理。

见这个帖子:

Access to private inherited fields via reflection in Java