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


在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl) 的线程“main”java.lang.reflect.InvocationTargetException 中的异常.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:160) 原因: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。重新定义引擎。在 mockit.internal.RedefinitionEngine.redefineMethods(RedefinitionEngine.java:116) 在 mockit.internal.RedefinitionEngine.setUpInternalStartupMock(RedefinitionEngine.java:53) 在 mockit.internal.Startup.loadInternalStartupMocks(Startup.java) 的 redefineMethods(RedefinitionEngine.java:184) :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 的东西。

想法?

4

1 回答 1

1

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

您确定“Debug as Junit Test”配置的类路径与“Run As Junit Test”配置的类路径相同吗?由于您收到 UnsatisfiedLinkError,可能是缺少一些 jar 文件。

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

于 2009-07-02T14:39:46.117 回答