当我尝试运行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)
答案 0 :(得分:3)
症状: 使用Jmockit和junit运行maven到java项目时出错。
MESSAGE: JMockit未正确初始化;检查jmockit.jar是否在类路径中的junit.jar之前(如果使用JUnit;如果没有,请查看文档)
原因:
在POM.xml文件中配置错误。 Jmockit依赖是在junit之后。
解:
编辑POM.xml文件。 jmockit.jar应该在junit.jar之前,然后jmockit依赖应该在junit之前。
答案 1 :(得分:2)
我在运行独立应用程序时遇到了类似问题,该应用程序需要同时包含 junit-4.8.1.jar 和 jmockit-0.999.4.jar 的jar。以下是我做的工作:
1。转到pom.xml。单击 depdendency hierarchy 选项,然后键入&#34; junit&#34;在搜索栏中。从这里你将了解你的&#34; junit&#34;来了。在这里,我发现&#34; nature-6.51&#34;在我的项目中,depdendency负责这一点(注意无论是什么)。
2。键入&#34; jmockit&#34;在搜索栏中记下此处显示的依赖关系(jmockit-0.999.4)
3。转到pom.xml并搜索&#34; nature&#34; (或负责junit的依赖)和&#34; jmockit&#34;我们分别在步骤#1和#2中记录了依赖性。您会看到 自然 依赖关系将列在 jmockit 依赖关系之上。
4. 现在只需复制 jmockit依赖并将其放在 nature-6.51 依赖项的上方(我做了bcz nature&#39) ; s jar在我的项目中携带junit)
这对我来说很成功。 :)
答案 2 :(得分:2)
官方指南告诉我们以下内容:
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>
更多详细信息http://png-pixel.com/和here。
答案 3 :(得分:0)
我的问题是在main
源文件夹而不是test
源文件夹中定义了测试。我们在pom中使用范围测试定义了jmockit和junit的依赖关系。因此,它们无法进行此测试。
在编辑和编译期间,IDE并没有那么严格,所以没有任何警告,但是测试因同样的奇怪错误而失败。