Java Mockito测试不';不能为提交者使用Eclipse4.9

Java Mockito测试不';不能为提交者使用Eclipse4.9,java,eclipse,mockito,byte-buddy,Java,Eclipse,Mockito,Byte Buddy,每当我尝试运行Mockito测试时,Eclipse都会给出以下输出: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.InstantiatorProvider2 (alternate: interface org.mockito.plugins.InstantiatorProvider) 通过使用maven repository比较mockito的给定版本和相

每当我尝试运行Mockito测试时,Eclipse都会给出以下输出:

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.InstantiatorProvider2 (alternate: interface org.mockito.plugins.InstantiatorProvider)
通过使用maven repository比较mockito的给定版本和相应的byte buddy版本,我尝试在byte buddy旁边安装不同版本的mockito。我使用mockito core 2.28.2和bytebuddy 1.9.10

@RunWith(MockitoJUnitRunner.class)
public class LanguageClientTest {

    private static final String WORKSPACE_EXECUTE_COMMAND = "workspace/executeCommand"; //$NON-NLS-1$

    @Test
    public void shouldInitializeLanguageClient() {

        //given
        LanguageClient mock = mock(LanguageClient.class);
        Mockito.doThrow(new IllegalStateException("Error occurred")).when(mock).startListener();
        //when
        Mockito.when(new LanguageClient()).thenCallRealMethod();
        //then
        verify(mock, Mockito.times(1)).registerCommands(WORKSPACE_EXECUTE_COMMAND);
    }
整个堆栈跟踪:

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.InstantiatorProvider2 (alternate: interface org.mockito.plugins.InstantiatorProvider)
    at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:74)
    at com.sun.proxy.$Proxy17.getInstantiator(Unknown Source)
    at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:44)
    at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.createMock(ByteBuddyMockMaker.java:25)
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
    at org.mockito.Mockito.mock(Mockito.java:1908)
    at org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:44)
    at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:19)
    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:49)
    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$1.evaluate(DefaultInternalRunner.java:43)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    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:74)
    at org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:80)
    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.NoClassDefFoundError: org/objenesis/ObjenesisStd
    at org.mockito.internal.creation.instance.ObjenesisInstantiator.<init>(ObjenesisInstantiator.java:16)
    at org.mockito.internal.creation.instance.DefaultInstantiatorProvider.<clinit>(DefaultInstantiatorProvider.java:13)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:68)
    at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:45)
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:67)
    at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:36)
    at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:19)
    at org.mockito.internal.runners.RunnerFactory$2.get(RunnerFactory.java:42)
    at org.mockito.internal.runners.RunnerFactory$2.get(RunnerFactory.java:40)
    at org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:40)
    ... 19 more
Caused by: java.lang.ClassNotFoundException: org.objenesis.ObjenesisStd
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 31 more


java.lang.IllegalStateException:无法初始化插件:interface org.mockito.plugins.InstanceorProvider2(可选:interface org.mockito.plugins.InstanceorProvider)
位于org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:74)
位于com.sun.proxy.$Proxy17.getInstantiator(未知源)
位于org.mockito.internal.creation.bytebuddy.Subclass ByteBuddyMockMaker.createMock(Subclass ByteBuddyMockMaker.java:44)
位于org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.createMock(ByteBuddyMockMaker.java:25)
位于org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
位于org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
位于org.mockito.mockito.mock(mockito.java:1908)
位于org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:44)
位于org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:19)
位于org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:16)
位于org.mockito.internal.configuration.IndendentAnnotationEngine.createMockFor(IndendentAnnotationEngine.java:38)
位于org.mockito.internal.configuration.IndendentAnnotationEngine.process(IndendentAnnotationEngine.java:62)
位于org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:49)
位于org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:41)
位于org.mockito.MockitoAnnotations.initMocks(MockitoAnnotations.java:69)
位于org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:43)
位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:363)
位于org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:74)
位于org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:80)
位于org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:39)
位于org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
位于org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
位于org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
原因:java.lang.NoClassDefFoundError:org/objenesis/ObjenesisStd
位于org.mockito.internal.creation.instance.ObjenesisInstantiator(ObjenesisInstantiator.java:16)
位于org.mockito.internal.creation.instance.DefaultInstanceorProvider。(DefaultInstanceorProvider.java:13)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:264)
位于org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:68)
位于org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:45)
位于org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:67)
位于org.mockito.internal.configuration.plugins.PluginRegistry(PluginRegistry.java:36)
位于org.mockito.internal.configuration.plugins.plugins.(plugins.java:19)
位于org.mockito.internal.RunnerFactory$2.get(RunnerFactory.java:42)
位于org.mockito.internal.RunnerFactory$2.get(RunnerFactory.java:40)
位于org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:40)
... 还有19个
原因:java.lang.ClassNotFoundException:org.objenesis.ObjenesisStd
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 还有31个

此错误是由于MANIFEST.MF中没有Objensis库造成的。因此,Eclipse有时与Mockito一起正确工作,有时则不正确。我在MANIFEST.MF中添加了以下行

 org.mockito.mockito-core,
 net.bytebuddy.byte-buddy,
 org.objenesis
在那之后,我可以在插件依赖中看到它,并且它工作了