我正在尝试用多个私有类测试一个类(是的,我知道这通常被认为是可测试性不佳的做法,但是这个问题与设计原则无关)。我的课看起来像这样:
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
可以实例化这些内部类吗?如果是这样,我在哪里出错?
您应该可以通过以下mods越过自己的ConstructorNotFoundExeception,并立即尝试:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, EnclosingClass.class);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(new EnclosingClass());
由于您的内部类不是静态的,因此它隐式地期望外部类提供“ this”引用。使用此方法,您似乎必须对此明确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句