希望这里对某人一个简单的问题.....

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

线程“主”中的异常java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法)处
在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)
在 mock .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的东西。

有什么想法吗?

最佳答案

我定期在 Debug模式下运行使用JMockit(带有和不带有“-javaagent” JVM参数)的JUnit测试,从没有任何问题。

您确定“调试为Junit测试”配置的类路径与“运行为Junit测试”配置的类路径相同吗?由于您收到了UnsatisfiedLinkError,可能是缺少一些jar文件。

如果这不是导致错误的原因,则可能是RAD 7.5.2特有的。

10-07 19:42
查看更多