我有要测试的方法。它的输入参数是私有静态类的对象列表
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。
答案 0 :(得分:3)
您在这里走错了兔子洞。
将内部类设为私有,可以向您的读者(和编译器)告知,该内部类打算仅用于外部封闭类。故事结束。
因此,在公共方法的签名中使用类名根本没有道理。
当然,从理论上讲,您可以使用reflection来解决此问题(直到Java 9模块进入您的使用方式),但是如上所述:这样做是在浪费时间。
如果您需要在课外使用其他内容,请不要将其设为私有。因此,请考虑将其包装保护。这样,同一软件包中的用户就可以访问,因此应该具有应位于同一软件包中的单元测试。