测试使用私有静态类的对象列表的方法

时间:2018-06-25 08:33:25

标签: java junit mockito powermock powermockito

我有要测试的方法。它的输入参数是私有静态类的对象列表

Class Invoker{

   public String method1(String inp){

   ArrayList<InnerClass> params = new ArrayList<>();
   params.add(new InnerClass("some value"));
   String op = method2(params);
   //other implementation
  }

   public String method2(ArrayList<InnerClass> list){

     //method implementation
  }

   private static class InnerClass {
      private String var1;

          public InnerClass(String str){
          super();
          this.str = str;
         }
   }
}

现在,我想为方法“ method1”编写一个测试用例。我面临的问题是,在测试时,我无法在测试类中创建ArrayList。

1 个答案:

答案 0 :(得分:3)

您在这里走错了兔子洞。

将内部类设为私有,可以向您的读者(和编译器)告知,该内部类打算用于外部封闭类。故事结束。

因此,在公共方法的签名中使用类名根本没有道理。

当然,从理论上讲,您可以使用reflection来解决此问题(直到Java 9模块进入您的使用方式),但是如上所述:这样做是在浪费时间。

如果您需要在课外使用其他内容,请不要将其设为私有。因此,请考虑将其包装保护。这样,同一软件包中的用户就可以访问,因此应该具有应位于同一软件包中的单元测试。