【问题标题】:Mocking static block (Error: java.lang.IllegalStateException)模拟静态块(错误:java.lang.IllegalStateException)
【发布时间】:2019-09-19 13:46:05
【问题描述】:

错误:java.lang.IllegalStateException:无法加载缓存项

模拟静态块

这发生在模拟类的静态方法时,该类扩展了具有静态块的超类。

java.lang.IllegalStateException: 无法加载缓存项

at org.easymock.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79)
at org.easymock.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
at org.easymock.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
at org.easymock.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
at org.easymock.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
at org.easymock.cglib.proxy.Enhancer.createClass(Enhancer.java:337)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:173)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:116)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:95)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2023)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:1970)
at org.powermock.api.easymock.PowerMock.mockStatic(PowerMock.java:259)

【问题讨论】:

    标签: java powermock easymock


    【解决方案1】:
    PowerMock @SuppressStaticInitialization fixed the issue.
    
    Note: You must not pass the class name but a fully qualified name of class in parameter of @SuppressStaticInitialization
    
    e.g. 
    
    @RunWith(PowerMockRunner.class)
    @PrepareForTest({staticClassExample.class}
    @SuppressStaticInitialization("com.services.ClassWithStaticBlockInitialization")
    public class ClassNameTest {
    ...
    }
    

    【讨论】:

    • 是的,SuppressStaticInitialization 的参数类型应该是类而不是字符串。很好,您发现了问题并自己解决了!
    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多