PowerMock可以实例化测试用例的内部类吗?

乔希·凯恩(Josh-cain):

我正在尝试用多个私有类测试一个类(是的,我知道这通常被认为是可测试性不佳的做法,但是这个问题与设计原则无关)。我的课看起来像这样:

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

可以实例化这些内部类吗?如果是这样,我在哪里出错?

布莱恩·亨利(B​​rian Henry):

您应该可以通过以下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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章