如何jmock Final class

7 junit

我试图在eclipse中使用JDave在junit中模拟final类(AnyFinalClass.java).

public void setUp() throws Exception {
    Mockery mockery = new Mockery() {{
        setImposteriser(ClassImposteriser.INSTANCE);
    }};

    AnyFinalClass any = mockery.mock(AnyFinalClass.class);
}
Run Code Online (Sandbox Code Playgroud)

我试图使用jdave-unfinalizer-1.1.jar作为javaagent,但没有任何成功.我尝试了多种方法,但得到了以下异常

java.lang.IllegalArgumentException:无法在net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)的net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)中继承最终类类AnyFinalClass.

已经尝试过jdave undeinalizer的人可以给我一个确切的步骤,让它在eclipse上运行.

我在eclipse.ini文件中设置了以下内容但得到了问题-Xbootclasspath/a:lC:\ WS\JunitTesting\jars\asm-3.0.jar -javaagent:C:\ WS\JunitTesting\jars\jdave-unfinalizer-1.1.jar

在运行执行junit时,我将vm参数作为javaagent:C:\ WS\JunitTesting\jars\jdave-unfinalizer-1.1.jar

我不确定代码是什么.jdave没有代码,它的网站指向其他一些无效的网站.请更正我的代码或提供相同的工作代码.任何帮助都非常感谢.

Mar*_*cki 2

来自Enhancer.java第446行:

if (TypeUtils.isFinal(sc.getModifiers()))
   throw new IllegalArgumentException("Cannot subclass final class " + sc);
Run Code Online (Sandbox Code Playgroud)

我没有使用过 JDave,而是使用过另一个模拟框架,唯一允许模拟最终类的是powermock 也可以在这里查看