JMockit未正确初始化

dev*_*v ツ 5 java junit jmockit spring-test spring-test-mvc

我使用的junit 4.12, jmockit 1.19spring-test 4.1.1.RELEASE测试我的Spring MVC的Java项目.

我的这些依赖关系的顺序pom.xml:

  • jmockit
  • junit
  • spring-test

服务层的测试用例工作正常.我只使用spring-test来测试控制器.在测试控制器时,我收到以下错误:

java.lang.IllegalStateException:JMockit未正确初始化; 请确保jmockit在运行时类路径中的junit之前,或者使用@RunWith(JMockit.class)

对于服务层,我通过使用@RunWith(JMockit.class )on test class 解决了这个错误.

但对于控制器我需要注释@RunWith(SpringJUnit4ClassRunner.class ).

如何解决此错误?

注:我把jmockit之前junitpom.xml

Eri*_* B. 0

我不完全确定这会解决您的问题,因为我自己刚刚开始使用 jmockit 并遇到了类似的样式问题。

您尝试过使用 -javaagent: 吗?适用于所有 JUnit 测试 (Eclipse) 的最简单方法是转到 JRE 设置并添加为 VM 参数(首选项 -> JRE -> 编辑 -> VM 默认值)。

此外,我通过 Marketplace 找到了一个 Eclipse JMockit 插件,它会自动将 javaagent 附加到任何 junit 测试中,以避免 JRE 配置。

最后,在你的POM中,你可以尝试(虽然我自己还没有测试过):

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>-javaagent:${org.jmockit:jmockit:jar}</argLine>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

但是,请记住,这仅适用于 Maven 启动的测试,不适用于通过 IDE 的测试。我还没有找到一种方法让 m2e 插件理解将 javaagent 附加到 junit 测试的要求。