调试器无法与JMockit配合使用

6

希望这是一个容易回答的问题......

我正在使用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在此之后结束。 它将以下内容转储到控制台中:


Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:160) Caused by: java.lang.UnsatisfiedLinkError: sun/instrument/InstrumentationImpl.redefineClasses0([Ljava/lang/instrument/ClassDefinition;)V at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:98) at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:197) at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:184) at mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:116) at mockit.internal.RedefinitionEngine.setUpInternalStartupMock(RedefinitionEngine.java:53) at mockit.internal.Startup.loadInternalStartupMocks(Startup.java:123) at mockit.internal.Startup.initialize(Startup.java:110) at mockit.internal.Startup.premain(Startup.java:97) ... 5 more

致命错误:处理-javaagent失败


我可以在我的测试中运行Junit 3和Junit 4,没有任何问题。 只有在使用-javaagent:jmockit.jar时(它们自己很好),才会出现问题,而我必须这样做才能使用jmockit。

有什么想法吗?


我遇到了一个不同的问题,二进制文件实际上与源代码并不对齐。 - zinking
1个回答

1

我经常在调试模式下运行使用JMockit的JUnit测试(带和不带“-javaagent”JVM参数),从未遇到任何问题。

您确定“Debug as Junit Test”配置的类路径与“Run As Junit Test”的类路径完全相同吗?由于出现了UnsatisfiedLinkError,可能是缺少某个jar文件。

如果这不是错误的原因,那么可能是RAD 7.5.2特有的问题...


这也发生在RAD 7.5.5上,症状与Jacob描述的相同。 - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接