【发布时间】:2015-03-18 04:16:21
【问题描述】:
我使用 jmockit 和 junit 为模块编写单元测试并在 STB 中运行它。我使用 jmockit-1.7 因为机顶盒只有 java 5。
运行单元测试时出现此错误: java.lang.IllegalStateException: Jmockit 尚未初始化。检查您的 Java 5 VM 是否已使用 -javaagent:jmockit.jar 命令行选项启动
但我的 STB 使用的是 siege java VM,所以它没有 -javaagent 命令行选项
我有谷歌,并从Running tests with JMockit找到了解决方案
@BeforeClass
public static void Initialize()
{
Mockit.setUpMocks();
}
但这行不通。我必须使用 jmockit-0.999.19 才能拥有Mockit.setUpMocks();
谁能帮我在没有 -javaagent 的情况下初始化 jmockit 并在 java 1.5 中运行?
【问题讨论】:
-
没有“-javaagent”参数就无法在Java 1.5上运行JMockit;为此,您必须在 Java 1.6 或更高版本上运行。
-
你确定@Rogério 吗?你能帮我证明一下吗?
-
JDK 1.5 没有 Attach API 库,它只出现在 JDK 1.6 中; JMockit 依靠它来动态加载提供必要的
java.lang.instrument.Instrumentation对象的Java 代理;当使用“-javaagent”时,Java 代理在启动时由 JVM 加载,因此 JMockit 不需要使用 Attach API。据我所知,这是唯一两种获取Instrumentation对象的方法;而在 JDK 1.5 中,只有其中一种(-javaagent 方式)可用。 -
非常感谢@Rogério先生。
标签: linux initialization jmockit javaagents