运行JMockit时出现NoSuchMethodError

时间:2013-06-19 21:05:53

标签: unit-testing junit jmockit

我正在尝试使用JMockit,以便我可以在第三方jar文件中模拟出最终方法。

当我尝试一个非常简单的测试时,我得到了com.sun.tools.attach.AttachNotSupportedException,经过一些搜索,我发现here这是由IBM JDK6.0不支持附加功能引起的,然后有人建议修复是把它放在我的VM args中:

-javaagent:C:/jars/jmockit.jar

当我这样做并重新跑步时,我得到以下例外。

java.lang.NoSuchMethodError: org/junit/runner/Description.getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
at mockit.integration.junit4.internal.RunNotifierDecorator.fireTestRunStarted(RunNotifierDecorator.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:613)
at mockit.internal.util.MethodReflection.invokeWithCheckedThrows(MethodReflection.java:95)
at mockit.internal.annotations.MockMethodBridge.callMock(MockMethodBridge.java:76)
at mockit.internal.annotations.MockMethodBridge.invoke(MockMethodBridge.java:41)
at org.junit.runner.notification.RunNotifier.fireTestRunStarted(RunNotifier.java)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:48)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

我使用的是JUnit4,以及用于Websphere 8.5开发的RAD8.5的JRE,它是IBM JRE6.0。以下是确切的JVM详细信息:

C:\IBM\WebSphere\AppServer\java\jre\bin>.\java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pwa6460_26sr3-20120810_01(SR3))
IBM J9 VM (build 2.6, JRE 1.6.0 Windows 7 amd64-64 20120809_118944 (JIT enabled, AOT enabled)
J9VM - R26_Java626_SR3_20120809_1152_B118944
JIT  - r11.b01_20120808_24925
GC   - R26_Java626_SR3_20120809_1152_B118944
J9CL - 20120809_118944)
JCL  - 20120713_01

我的代码是一个简单的空测试,到目前为止还没有使用JMockit的任何功能。这是:

public class TestJMockit {

    @Test
    public void testJMockit() {

        boolean isTrue = true;
        assertTrue(isTrue);
    }

}

我使用的是jmockit.jar文件的1.2版,这是撰写本文时的最新版本。

是否有人知道在JMockit的{​​{1}}版本上使用IBM是否完全可能,或者根本不可能?

之前是否有其他人遇到此错误并知道修复程序?

0 个答案:

没有答案