JMockit javaagent 未初始化 JMockit

2024-03-12

我已经设置了 JMockit,以便与一些也使用 Robolectric 的 JUnit 测试一起使用,但我遇到了错误。我主要使用 Maven 来运行测试。

当我运行测试时mvn test以及按指定配置的 javaagenthere http://jmockit.googlecode.com/svn/trunk/www/tutorial/RunningTests.html我得到了通常的例外:

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

我已经验证 JMockit 位于类路径上beforeJUnit 使用mvn dependency:build-classpath http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html and mvn test --debug。我还验证了-javaagent参数被适当地调用使用mvn test --debug.

库版本:

  • JDK 1.6
  • JMockit 1.5
  • JUnit 4.8.2
  • 机器人电动2.2Robolectric 运行程序阻止我使用 JMockit 运行程序。
  • Maven 3.0.3
  • 万无一失2.14.1

测试类如下:

@RunWith(RobolectricTestRunner.class)
public class HelpFragTest {

    FragmentActivity activity;
    FragmentManager fragmentManager;
    @Mocked ActionBarManager actionBarManager;

    @Before
    public void setup() throws Exception {
        activity = Robolectric.buildActivity(FragmentActivity.class).create().resume().get();
        fragmentManager = activity.getSupportFragmentManager();
        MyApplication.instance().setActionBarManager(actionBarManager);
    }

    @Test
    public void testShow(){
        new NonStrictExpectations() {{
            Helper.staticMethod(anyString, anyString);
            actionBarManager.clear();
            actionBarManager.setTitle(anyString);
            actionBarManager.refresh();
        }};
        HelpFrag frag = HelpFrag.newInstance();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.add(frag, StringUtils.EMPTY);
        transaction.commit();

        assertTrue(frag.isVisible());

    }
}

我也尝试过不使用显式运行程序或 JavaAgent,在这种情况下,我从相同的代码中得到以下异常:

java.lang.IllegalStateException:记录期望的位置无效


我遇到了同样的问题,问题似乎是 Robolectric 测试运行程序干扰了 JMockit-JUnit 集成。看this https://groups.google.com/forum/#!topic/jmockit-users/OL3Zx3qw91U.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JMockit javaagent 未初始化 JMockit 的相关文章

随机推荐