Junit 如何锁定最终类

Junit 如何锁定最终类,junit,Junit,我试图在eclipse中使用JDave模拟junit中的最终类(AnyFinalClass.java) public void setUp() throws Exception { Mockery mockery = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; AnyFinalClass any = mockery.mock(AnyFinalClass.class);

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

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

    AnyFinalClass any = mockery.mock(AnyFinalClass.class);
}
我试图使用jdave-unfinalizer-1.1.jar作为javaagent,但没有成功。我尝试了多种方法,但出现以下异常

java.lang.IllegalArgumentException:无法为final类AnyFinalClass子类 位于net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:446) 位于net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)

已经尝试过jdave unfinalizer的人能告诉我如何使它在eclipse上工作的确切步骤吗

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

    AnyFinalClass any = mockery.mock(AnyFinalClass.class);
}
我在eclipse.ini文件中设置了以下内容,但遇到了问题 -Xbootclasspath/a:lC:\WS\junitesting\jars\asm-3.0.jar -javaagent:C:\WS\junitesting\jars\jdave-unfinalizer-1.1.jar

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

我不确定代码是什么。jdave没有代码,它的站点指向其他一些不工作的站点。请更正我的代码或提供相同的工作代码。
非常感谢您的帮助。

来自Enhancer.java第446行:

if (TypeUtils.isFinal(sc.getModifiers()))
   throw new IllegalArgumentException("Cannot subclass final class " + sc);
我没有使用JDave,但是使用了另一个模拟框架,唯一允许模拟最终类的是
另请查看

为了运行unfinalizer,您必须将
-javaagent:path_to_unfinalizer/jdave-unfinalizer-1.1.jar
放在测试运行配置的VM参数中

我还必须在启动测试的项目的类路径中包含jdave unfinalizer的几个依赖项。以下内容摘自jdave的maven定义:

jdave-core 1.1
cglib-nodep 2.1_3
objenesis 1.0
asm 3.0
asm-commons 3.0
asm-tree 3.0

请尝试在测试运行配置中使用tu put-javaagent:YOUR_PATH\jdave-unfinalizer-1.1.jar作为VM参数,而不是在eclipse.ini中使用“bootclasspath”