6

当我尝试运行 Junit 测试用例时,我遇到了异常。如果我正在更改类路径条目顺序,它工作正常,但 Jococo 覆盖不起作用。它正在挂起。任何人都可以帮助解决这个问题。

<classpathentry kind="lib" path="libt/junit-4.8.2.jar"/>
<classpathentry kind="lib" path="lib/jmockit.jar"/>
java.lang.IllegalStateException: JMockit wasn't properly initialized; check that jmockit.jar precedes junit.jar in the classpath (if using JUnit; if not, check the documentation)
    at com.amica.bc.testutil.BillingCenterTestUtil$1.<init>(BillingCenterTestUtil.java:18)
at com.amica.bc.testutil.BillingCenterTestUtil.setCurrentUserName(BillingCenterTestUtil.java:18)
    at amica.util.logging.TestAmicaGWLogger.setUp(TestAmicaGWLogger.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
4

4 回答 4

5

症状:使用 Jmockit 和 junit 将 maven 运行到 java 项目中时出错。

消息:JMockit 未正确初始化;检查 jmockit.jar 在类路径中是否位于 junit.jar 之前(如果使用 JUnit;如果没有,请查看文档)

原因:

POM.xml 文件中配置错误。Jmockit 依赖是在 junit 之后。

解决方案:

编辑 POM.xml 文件。jmockit.jar 应该在 junit.jar 之前,然后 jmockit 依赖项应该在 junit 之前。

于 2015-06-06T21:43:38.067 回答
3

官方指南告诉我们以下内容:

JMockit 还需要使用 -javaagent JVM 初始化参数;使用 Maven Surefire 插件进行测试执行时,指定如下:

<plugins>
   <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.21.0</version> <!-- or some other version -->
      <configuration>
         <argLine>
            -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
         </argLine>
         <!-- ... -->
      </configuration>
   <plugin>
   <!-- ... -->
<plugins> 

更多细节在这里这里

于 2018-12-25T23:11:33.783 回答
2

我在运行需要junit-4.8.1.jarjmockit-0.999.4.jar的独立应用程序时遇到了类似的问题。以下是我为完成这项工作所做的步骤:

1.转到 pom.xml。单击依赖层次结构选项并在搜索栏中键入“junit”。从这里您将了解您的“junit”来自哪个依赖项。在这里,我发现“nature-6.51”依赖关系在我的项目中负责(请注意它是什么)。

junit 依赖

2.在搜索栏中输入“jmockit”并记下此处显示的依赖项 (jmockit-0.999.4)

jmockit 依赖

3.转到 pom.xml 并搜索“nature” (或负责 junit 的依赖项)和“jmockit”依赖项,我们分别在第 1 步和第 2 步中记下。您将看到自然依赖项将列在jmockit依赖项上方。

4.现在只需复制jmockit依赖并将其放在nature-6.51依赖之上(我在我的项目中做了bcz nature的jar正在携带junit)

这对我来说很成功。:)

于 2016-01-06T05:25:30.853 回答
0

我的问题是在main源文件夹而不是源文件夹中定义了一个测试test。我们在 pom with scope test 中定义的 jmockit 和 junit 的依赖关系。因此,它们不能用于此测试。

IDE 在编辑和编译期间并不那么严格,因此没有任何警告,但测试失败并出现同样的奇怪错误。

于 2015-01-13T13:38:01.013 回答