Skip to main content
 首页 » 编程设计

java之测试使用私有(private)静态类的对象列表的方法

2024年06月03日68duanxz

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

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。

请您参考如下方法:

你在这里走错了兔子洞。

将内部类设为私有(private)向您的读者(顺便说一句,编译器)表明该内部类旨在在外部封闭类中使用。故事结束。

因此,在公共(public)方法的签名中使用类名根本没有意义。

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

如果您需要在类之外使用某些东西,请不要将它们设为私有(private)。因此,请考虑将它们包保护起来。然后同一包内的用户可以访问,因此单元测试应该位于同一包内)。