无法初始化插件:interface org.mockito.plugins.mockmaker

rwqw0loc  于 2021-06-29  发布在  Java
关注(0)|答案(26)|浏览(638)

一旦开始测试,我会遇到以下异常:

  1. Testcase: treeCtorArgumentTest(com.xythos.client.drive.cachedtree.CachedTreeTest): Caused an ERROR
  2. Could not initialize plugin: interface org.mockito.plugins.MockMaker
  3. java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
  4. at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66)
  5. at com.sun.proxy.$Proxy7.isTypeMockable(Unknown Source)
  6. at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
  7. at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
  8. at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:168)
  9. at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162)
  10. at org.mockito.internal.MockitoCore.mock(MockitoCore.java:64)
  11. at org.mockito.Mockito.mock(Mockito.java:1687)
  12. at org.mockito.Mockito.mock(Mockito.java:1600)
  13. at com.xythos.client.drive.cachedtree.CachedTreeTest.setUp(CachedTreeTest.java:51)
  14. Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/loading/ClassLoadingStrategy
  15. at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.<init>(SubclassByteBuddyMockMaker.java:33)
  16. at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22)
  17. at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  18. at java.lang.Class.newInstance(Class.java:442)
  19. at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54)
  20. at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:18)
  21. at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:17)
  22. at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24)
  23. Caused by: java.lang.ClassNotFoundException: net.bytebuddy.dynamic.loading.ClassLoadingStrategy
  24. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  25. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  26. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  27. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

这是我的测试:

  1. package com.xythos.client.drive.cachedtree;
  2. import org.junit.After;
  3. import org.junit.AfterClass;
  4. import org.junit.Before;
  5. import org.junit.BeforeClass;
  6. import org.junit.Test;
  7. import org.junit.runner.RunWith;
  8. import org.mockito.junit.MockitoJUnitRunner;
  9. @RunWith(MockitoJUnitRunner.class)
  10. public class CachedTreeTest {
  11. public CachedTreeTest() {
  12. }
  13. @Test
  14. public void treeCtorArgumentTest() {
  15. somemock m = mock(SomeClass.class);
  16. }
  17. }

我正在使用netbeans8.2。我下载了mockito-core-2.7.0.jar,然后选择“testlibraries”->“addjar”并添加了mockito-core-2.7.0.jar。
类路径和一切看起来都很好,我仍然得到例外。
有什么建议吗?

pod7payv

pod7payv1#

在我从${home}.m2\repository\net\bytebuddy中删除bytebuddy文件夹并从pom.xml中删除byte-buddy代理、byte-buddy和objenesis依赖关系之后,它对我起了作用

j5fpnvbx

j5fpnvbx2#

将bnd方面添加到此
除了paskas的答案之外,如果您使用的是cnfmaven存储库(比如我的 cnf/central.mvn ).

  1. org.mockito:mockito-core:2.21.0
  2. net.bytebuddy:byte-buddy:1.8.15
  3. net.bytebuddy:byte-buddy-agent:1.8.15
  4. org.objenesis:objenesis:2.6

为了方便引用,可以在 cnf/build.bnd ```
mockito: org.mockito:mockito-core; version=2.21.0,
net.bytebuddy:byte-buddy; version=1.8.15,
net.bytebuddy:byte-buddy-agent; version=1.8.15,
org.objenesis:objenesis; version=2.6

  1. 在项目的bnd文件中

-testpath:
${mockito}

展开查看全部
r7knjye2

r7knjye23#

我也遇到了同样的问题,尝试了@paskas的解决方案,一开始效果不错。已将bytebuddy依赖项添加到my pom.xml:

  1. <dependency>
  2. <groupId>net.bytebuddy</groupId>
  3. <artifactId>byte-buddy-dep</artifactId>
  4. <version>1.9.7</version>
  5. </dependency>

希望这有帮助。

af7jpaap

af7jpaap4#

我在类路径上有byte-buddy(是mockito2.8.9的可传递dep),但仍然得到了异常。原因是我用jre而不是jdk运行单元测试。改用jdk对我很有效。

bq3bfh9z

bq3bfh9z5#

如果您使用的是powermock,请确保依赖项指向:

  1. org.powermock:powermock-api-mockito2

而不是

  1. org.powermock:powermock-api-mockito
i5desfxk

i5desfxk6#

我对mockito的依赖是在androidtestimplementation下,而不是在testimplementation下。
当我尝试在单元测试中使用mockito时,我也遇到了同样的错误。我所要做的就是添加依赖项。

2vuwiymt

2vuwiymt7#

对于android开发,您需要导入以下内容:

  1. dependencies {
  2. testCompile "org.mockito:mockito-core:+"
  3. androidTestCompile "org.mockito:mockito-android:+"
  4. }

找不到这方面的任何参考,但这是唯一一个为我工作。

wnrlj8wa

wnrlj8wa8#

mockito3.6.0-core也有同样的错误。我用这个指令解决了这个问题:
https://howtodoinjava.com/mockito/plugin-mockmaker-error/

iq0todco

iq0todco9#

在我的情况下,移除 mockito-core ,测试成功了!

  1. <dependency>
  2. <groupId>org.mockito</groupId>
  3. <artifactId>mockito-core</artifactId>
  4. <version>${mockito.version}</version>
  5. <scope>test</scope>
  6. </dependency>

我的版本在这里,jdk是1.8.0\u121。

  1. <properties>
  2. <powermock.version>2.0.7</powermock.version>
  3. <mockito.version>2.8.9</mockito.version>
  4. </properties>

现在我的依赖项是:
powermock-api-mockito2
powermock-module-junit4

展开查看全部
tv6aics1

tv6aics110#

如果启用模拟final类的选项,mockito2就会出现此问题。
这意味着当您在test/resources/mockito extensions目录中有一个名为org.mockito.plugins.mockmaker的文件,该文件内联有以下内容mock maker。
在这种情况下,byte-buddy是mockito核心的一个可传递依赖项,它在将自己的代理附加到java进程时遇到了问题。但是只有在使用jre时才会出现问题。
解决方案是:
使用jdk而不是jre

添加 -javaagent:byte-buddy-agent-*.jar 作为虚拟机选项

o4hqfura

o4hqfura11#

删除版本声明对我有效:
例子:

  1. <dependency>
  2. <groupId>org.mockito</groupId>
  3. <artifactId>mockito-core</artifactId>
  4. <version>2.8.9</version>
  5. <scope>test</scope>
  6. </dependency>

删除2.8.9
之后:

  1. <dependency>
  2. <groupId>org.mockito</groupId>
  3. <artifactId>mockito-core</artifactId>
  4. <scope>test</scope>
  5. </dependency>

这可能是由于该依赖项的jar包之间的版本问题造成的。

展开查看全部
jgzswidk

jgzswidk12#

mockito2需要依赖项。添加下面的两个bytebuddy依赖项。为我解决了问题:
byte-buddy-x.x.xx.jar
byte-buddy-agent-x.x.xx.jar
在我的例子中,我在项目中包含jar文件,可以在以下位置找到:https://bintray.com/raphw/maven/bytebuddy/
如果maven项目需要它,只需添加:

  1. <dependency>
  2. <groupId>net.bytebuddy</groupId>
  3. <artifactId>byte-buddy</artifactId>
  4. <version>1.9.14</version>
  5. <type>pom</type>
  6. </dependency>
hsvhsicv

hsvhsicv13#

不是对最初海报的回答,因为他/她正在使用netbeans,但是在eclipse中,我需要执行“maven->updateproject”以使测试再次工作。

x759pob2

x759pob214#

只需更新到 org.mockito:mockito-core . 一旦我做了,错误就消失了!

368yc8dk

368yc8dk15#

将mockito依赖项显式定义为powermock和springboot testcompile组中的版本:“org.mockito”,名称:“mockito core”,版本:“2.8.9”

相关问题