Reputation: 41
Error: java.lang.IllegalStateException: Unable to load cache item
Mocking static block
This happened when mocking a static method of a class that is extending a superclass that has a static block.
java.lang.IllegalStateException: Unable to load cache item
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)
Upvotes: 1
Views: 1067
Reputation: 41
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 {
...
}
Upvotes: 2