我已经设置了JMockit,以便与一些JUnit测试一起使用,也使用Robolectric,但是我会遇到错误。我主要是使用maven来运行测试。
当我使用mvn测试和配置为指定这里的javaagent运行测试时,就会得到通常的异常:
java.lang.IllegalStateException: JMockit没有正确初始化;在类路径中检查jmockit.jar先于junit.jar (如果使用JUnit,则检查文档)
我已经验证了JMockit在JUnit之前的类路径上,使用mvn dependency:build-classpath和mvn test --debug。我还验证了使用-javaagent适当地调用mvn test --debug参数。
图书馆版本:
考试课程如下:
@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:记录期望的无效位置
发布于 2013-12-23 20:42:26
我也遇到过同样的问题,问题似乎是Robolectric运行程序干扰了JMockit-JUnit集成。见这。
发布于 2015-06-06 21:54:33
症状:在java项目中使用Jmockit和junit运行maven时出错。
消息: JMockit没有正确初始化;检查jmockit.jar在类路径中先于junit.jar (如果使用JUnit,则检查文档)
原因:
在POM.xml文件中配置错误。Jmockit依赖性是在junit之后。
解决办法:
编辑POM.xml文件。jmockit.jar应该在junit.jar之前,然后jmockit依赖项应该在junit之前。
(总是把jmockit放在junit前面)
https://stackoverflow.com/questions/20672198
复制相似问题