我有要测试的方法。它的输入参数是一个私有(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)。因此,请考虑将它们包保护起来。然后同一包内的用户可以访问,因此单元测试应该位于同一包内)。