我正在尝试使用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
是否完全可能,或者根本不可能?
之前是否有其他人遇到此错误并知道修复程序?