【发布时间】:2009-05-13 20:02:09
【问题描述】:
希望对某人有一个简单的问题.....
我正在使用 RAD 7.5.2,并且正在编写 Junit 测试。我用 JUnit 3 写得很好,然后我想模拟一些函数调用。所以我加载了 jmockit 0.9.7 和 Junit 4.6。我还包括 -javaagent:jmockit.jar 作为 VM 参数。
当我“运行为 Junit 测试”时,它完全没有问题(至少,我在输出中看不到任何问题)。 Junit的输出很好,没有错误转储到控制台。
当我“调试为 Junit 测试”时,它不起作用。它把我甩到了:
InstrumentationImpl.class --> 找不到源
...当我点击继续时...
NativeMethodAccessorImpl.class --> 找不到源
...当我点击继续...
JUnit 在此之后结束。它将以下内容转储到控制台:
线程“main”中的异常 java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:618) 在 sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:160) 引起:java.lang.UnsatisfiedLinkError: sun/instrument/InstrumentationImpl.redefineClasses0([Ljava/lang/instrument/ClassDefinition;)V 在 sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:98) 在 mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:197) 在 mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:184) 在 mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:116) 在 mockit.internal.RedefinitionEngine.setUpInternalStartupMock(RedefinitionEngine.java:53) 在 mockit.internal.Startup.loadInternalStartupMocks(Startup.java:123) 在 mockit.internal.Startup.initialize(Startup.java:110) 在 mockit.internal.Startup.premain(Startup.java:97) ... 5 更多
致命错误:处理 -javaagent 失败
我可以毫无问题地在我的测试中同时运行 JUnit 3 和 JUnit 4,当我使用 -javaagent:jmockit.jar(使用调试器;它们本身很好)时,事情变得丑陋了,我有这样做是为了使用 jmockit 的东西。
想法?
【问题讨论】:
-
我有一个不同的问题,二进制文件实际上与源代码不一致。
标签: debugging junit4 jmockit javaagents