Running test in Eclipse fails with weird MockMaker error, but doesn't fail from mvn build, and not an Android project

2,780 views
Skip to first unread message

davidmic...@gmail.com

unread,
Apr 26, 2019, 5:39:05 PM4/26/19
to mockito
Someone just asked me to look at an issue with a unit test for plain Java code.  We're not using Android.  When I run the build from the shell with mvn, it works fine.  When I run it from Eclipse, I get the following very unhelpful stack trace:

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
    at org
.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:60)
    at com
.sun.proxy.$Proxy9.isTypeMockable(Unknown Source)
    at org
.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
    at org
.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
    at org
.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:232)
    at org
.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:226)
    at org
.mockito.internal.MockitoCore.mock(MockitoCore.java:64)
    at org
.mockito.Mockito.mock(Mockito.java:1855)
    at org
.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:36)
    at org
.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)
    at org
.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:38)
    at org
.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:62)
    at org
.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:57)
    at org
.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:41)
    at org
.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:69)
    at org
.mockito.internal.runners.DefaultInternalRunner$1.withBefores(DefaultInternalRunner.java:39)
    at org
.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:276)
    at org
.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org
.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org
.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org
.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org
.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org
.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org
.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org
.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org
.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:79)
    at org
.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:85)
    at org
.mockito.internal.runners.StrictRunner.run(StrictRunner.java:39)
    at org
.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
    at org
.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org
.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org
.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org
.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org
.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org
.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in sun.misc.CompoundEnumeration@ff5b51f
    at org
.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:94)
    at org
.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:48)
    at org
.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:20)
    at org
.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:18)
    at org
.mockito.internal.configuration.GlobalConfiguration.tryGetPluginAnnotationEngine(GlobalConfiguration.java:55)
    at org
.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:68)
   
... 20 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker. (This mock maker is not supported on Android.)

Java               : 1.8
JVM vendor name    
: Oracle Corporation
JVM vendor version
: 25.152-b32
JVM name          
: Java HotSpot(TM) 64-Bit Server VM
JVM version        
: 1.8.0_152-b32
JVM info          
: mixed mode
OS name            
: Windows 7
OS version        
: 6.1

    at org
.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:171)
    at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun
.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java
.lang.reflect.Constructor.newInstance(Unknown Source)
    at java
.lang.Class.newInstance(Unknown Source)
    at org
.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:89)
   
... 25 more
Caused by: java.lang.IllegalStateException: No compatible attachment provider is not available
    at net
.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:367)
    at net
.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:352)
    at net
.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:320)
    at net
.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:306)
    at org
.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<clinit>(InlineByteBuddyMockMaker.java:101)
   
... 31 more


We're not using Android. We're using Java 8, mockito-core 2.15 and byte-buddy 1.7.11.

I was able to run a different test class in the same project without issue. The only barely surprising detail in the one with the problem is that it's mocking an interface.

Tim van der Lippe

unread,
Apr 30, 2019, 10:58:20 AM4/30/19
to mockito
You are using quite an old version of Mockito. Can you upgrade to the latest version and see if that resolves the issue?

Op vr 26 apr. 2019 om 22:39 schreef <davidmic...@gmail.com>:
--
You received this message because you are subscribed to the Google Groups "mockito" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mockito+u...@googlegroups.com.
To post to this group, send email to moc...@googlegroups.com.
Visit this group at https://groups.google.com/group/mockito.
To view this discussion on the web visit https://groups.google.com/d/msgid/mockito/be34c125-07b2-47ea-954f-0834236d1ecb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages