我正在尝试使用许多私人课程来测试一个课程(是的,我知道这通常被认为是可测试性的不良做法,但这个问题与设计原则无关)。我的课看起来像这样:
public class EnclosingClass {
.
.
.
private class InnerClass implements InnerClassType {
public InnerClass(){ /* do stuff */}
public int InnerClassMethod();
}
}
InnerClassType
是一个公共接口
我尝试通过执行以下操作使用 powermock 实例化类:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, null);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(null);
并且:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
InnerClassType innerClass = (InnerClassType) Whitebox.invokeConstructor(clazz);
但是,在这两次尝试中,我都得到了ConstructorNotFoundException
是否可以实例化这些内部类?如果是这样,我哪里错了?