在正常情况下,在运行单元测试时,使用JMockit只要求在JMockit JAR之前声明JUnit JAR。
在使用RobolecticTestRunner运行的测试中使用JMockit模拟时,我遇到了以下StackOverflowError。
java.lang.StackOverflowError: null
at java.lang.ThreadLocal.getMap(ThreadLocal.java:213)
at java.lang.ThreadLocal.get(ThreadLocal.java:144)
at mockit.internal.mockups.MockState.update(MockState.java:54)
at mockit.internal.mockups.MockStates.updateMockState(MockStates.java:93)
at mockit.internal.state.TestRun.updateMockState(TestRun.java:160)
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java)
at mockit.integration.junit4.internal.MockFrameworkMethod.validatePublicVoidNoArg(MockFrameworkMethod.java:46)
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at mockit.internal.util.MethodReflection.invokeWithCheckedThrows(MethodReflection.java:106)
at mockit.internal.mockups.MockMethodBridge.callMock(MockMethodBridge.java:85)
at mockit.internal.mockups.MockMethodBridge.invoke(MockMethodBridge.java:44)
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java)
at mockit.integration.junit4.internal.MockFrameworkMethod.validatePublicVoidNoArg(MockFrameworkMethod.java:46)
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at mockit.internal.util.MethodReflection.invokeWithCheckedThrows(MethodReflection.java:106)
at mockit.internal.mockups.MockMethodBridge.callMock(MockMethodBridge.java:85)
at mockit.internal.mockups.MockMethodBridge.invoke(MockMethodBridge.java:44)
at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java)在使用RobolectricTestRunner运行单元测试时,有没有什么特殊的配置可以让JMockit正常工作?下面的讨论让它看起来像是带有1.5版的JMockit
RobolectricTestRunner's HelperTestRunner having trouble invoking Jmockit?
这篇文章为创建一个调用启动的自定义RobolectricTestRunner提供了一个建议。initializeIfNeeded()
can jmockit and robolectric coexist?
然而,这两个讨论都没有帮助我找到解决方案。任何建议都将不胜感激。谢谢。
发布于 2014-08-02 00:55:42
我能够使用Robolectrial2.3和JMOCKIT1.8(现在不要使用更高版本的JMockit )实现这一点。
也许可以试试这个?
https://stackoverflow.com/questions/23065171
复制相似问题