JMockit – 初始化问题

当我使用以下测试时,我得到一个警告:

警告:JMockit已按需初始化,这可能导致某些测试失败; 请查看文档以获得初始化的更好方法。

这是我的测试实现:

package test; import static mockit.Mockit.*; import junit.framework.TestCase; import mockit.*; import mockit.integration.junit4.*; import org.junit.*; import org.junit.runner.*; import filip.ClassUnderTest; import filip.LowerClass; @RunWith(JMockit.class) public class MockTest extends TestCase { @MockClass(realClass = LowerClass.class) public static class LowerClassMock { @Mock(invocations = 1) public String doWork() { return "Mockowanie dziala :D"; } } @Before public void setUp() { setUpMocks(LowerClassMock.class); } @After public void tearDown() { tearDownMocks(); } @Test public void testJMockit() { ClassUnderTest classUnderTest = new ClassUnderTest(); classUnderTest.print(); } } 

有任何想法吗?

据我了解,当一个人试图调用JMockit方法时, 抛出此exception,而JMockit尚未正确初始化。

确保遵循JMockit安装说明 ,尤其是第3点和第4点。如果JMockit jar位于类路径中的JUnit jar 之后 ,则可能会导致问题。

对于链接,已接受的答案已经过时了,因此值得直接提及各种解决方案。

要解决此问题,请执行以下操作之一:

1 – 指定一个javaagent

将此添加到您的JUnit执行环境(适用于您的版本):

  -javaagent:path/to/your/jmockit/jmockit-0.998.jar 

2 – 在Maven中配置Surefire插件以避免它

将以下内容添加到Maven配置中(选择您自己的版本)

   mockit jmockit    junit junit  

确保您的Surefire插件配置如下(对于您的特定版本):

  org.apache.maven.plugins maven-surefire-plugin 2.4.3  -javaagent:${settings.localRepository}/mockit/jmockit/0.998/jmockit-0.998.jar true   

3 – 使用JUnit @RunWith注释

在每个测试类上添加此JUnit runner注释

 @RunWith(JMockit.class) public class ExampleTest {} 

除了Gary Rowe的解决方案 :

将JMockit集成到Surefire中的更强大(即版本和存储库路径不可知)将是

 -javaagent:${org.jmockit:jmockit:jar} 

要使此解析工作,maven-dependency-plugin(版本> = 2.5.1!)需要像这样配置:

  maven-dependency-plugin 2.5.1   getClasspathFilenames  properties    

我只是补充说:

@RunWith(JMockit.class)

根据接受的答案中的文档,解决了该问题。

它在IntelliJ中仍然不适合我。 我能够运行命令行。

我在类路径中设置了一个属性文件,以便于配置Junit 5:

必须命名为junit-platform.properties

 junit.jupiter.extensions.autodetection.enabled = true junit.jupiter.testinstance.lifecycle.default = per_class 

确保您使用的是具有JmockitExtension类的更新版本的Jmockit。 注意:Jmockit 1.8版本不比版本1.41新。 1.8版应该是1.08。

Maven Central参考: https : //mvnrepository.com/artifact/org.jmockit/jmockit