测试使用私有静态对象列表的方法 class
Testing a method which uses an List of objects of a private static class
我有方法要测试。它的输入参数是 private static class
的对象列表
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'写一个测试用例。我面临的问题是,在测试时,我无法在测试 class.
中创建 ArrayList
你走错地方了。
将内部 class 设置为私有向您的读者(顺便说一句,编译器)传达这个内部 class 旨在 仅 在外部包围 class。故事结束。
因此,在 public 方法的签名中使用 class 名称根本没有意义。
当然,理论上你可以使用 reflection 来解决这个问题(直到可能 Java 9 个模块妨碍你),但如前所述:这样做是浪费时间。
如果您需要使用 class 以外的东西,请不要将它们设为私有。因此,请考虑将它们包保护起来。然后同一包内的用户可以访问,因此单元测试应该位于同一包内)。
我有方法要测试。它的输入参数是 private static class
的对象列表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'写一个测试用例。我面临的问题是,在测试时,我无法在测试 class.
中创建 ArrayList你走错地方了。
将内部 class 设置为私有向您的读者(顺便说一句,编译器)传达这个内部 class 旨在 仅 在外部包围 class。故事结束。
因此,在 public 方法的签名中使用 class 名称根本没有意义。
当然,理论上你可以使用 reflection 来解决这个问题(直到可能 Java 9 个模块妨碍你),但如前所述:这样做是浪费时间。
如果您需要使用 class 以外的东西,请不要将它们设为私有。因此,请考虑将它们包保护起来。然后同一包内的用户可以访问,因此单元测试应该位于同一包内)。