一旦开始测试,我会遇到以下异常:
Testcase: treeCtorArgumentTest(com.xythos.client.drive.cachedtree.CachedTreeTest): Caused an ERROR
Could not initialize plugin: interface org.mockito.plugins.MockMaker
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66)
at com.sun.proxy.$Proxy7.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:168)
at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:64)
at org.mockito.Mockito.mock(Mockito.java:1687)
at org.mockito.Mockito.mock(Mockito.java:1600)
at com.xythos.client.drive.cachedtree.CachedTreeTest.setUp(CachedTreeTest.java:51)
Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/loading/ClassLoadingStrategy
at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.<init>(SubclassByteBuddyMockMaker.java:33)
at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54)
at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:18)
at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:17)
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24)
Caused by: java.lang.ClassNotFoundException: net.bytebuddy.dynamic.loading.ClassLoadingStrategy
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
这是我的测试:
package com.xythos.client.drive.cachedtree;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class CachedTreeTest {
public CachedTreeTest() {
}
@Test
public void treeCtorArgumentTest() {
somemock m = mock(SomeClass.class);
}
}
我正在使用netbeans8.2。我下载了mockito-core-2.7.0.jar,然后选择“testlibraries”->“addjar”并添加了mockito-core-2.7.0.jar。
类路径和一切看起来都很好,我仍然得到例外。
有什么建议吗?
26条答案
按热度按时间nvbavucw1#
将bnd方面添加到此
除了paskas的答案之外,如果您使用的是cnfmaven存储库(比如我的
cnf/central.mvn
).为了方便引用,可以在
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
-testpath:
${mockito}
qlvxas9a2#
在我的情况下,移除
mockito-core
,测试成功了!我的版本在这里,jdk是1.8.0\u121。
现在我的依赖项是:
powermock-api-mockito2
powermock-module-junit4
93ze6v8z3#
我通过在maven的pom xml中删除jmockit解决了这个问题。在那之后,我的JUnit5测试就完美地工作了。
对于这种依赖关系,我总是会遇到如下错误:
sgtfey8w4#
在我从${home}.m2\repository\net\bytebuddy中删除bytebuddy文件夹并从pom.xml中删除byte-buddy代理、byte-buddy和objenesis依赖关系之后,它对我起了作用
tct7dpnv5#
mockito3.6.0-core也有同样的错误。我用这个指令解决了这个问题:
https://howtodoinjava.com/mockito/plugin-mockmaker-error/
kcwpcxri6#
我有同样的问题-相同的堆栈跟踪出现在我的日志中。这是典型的问题与项目设置。。。或
如果bytebuddys jars没有正确下载,那么问题可能出在这些jars中。
当我尝试手动检查classloadingstrategy类时,我得到了zip错误。
在这种情况下,从本地maven目录手动删除byte buddy就足够了,通常位于:
{home}/.m2/repository/net/bytebuddy/
下一次尝试运行项目或测试时,它们将再次下载,并应按预期工作。
不幸的是,当类或jar丢失以及jar损坏时,普通java类加载器以同样的方式面对。
33qvvth17#
问题:powermock+mockito+testng+powermocktestcase
分享我的问题/解决方案,以防对任何人有所帮助。
我的依赖关系都指向正确:
但我还是犯了以下错误:
我的测试是这样的:
如本线程中所述,删除
initMocks()
方法删除错误,但所有模拟都变为null。✅ 解决方案:beforetest vs beforethod
我发现我的案子
@BeforeTest
实际上是个问题。把它改成@BeforeMethod
已解决错误。我猜这和豆子注射有关;
@BeforeTest
在任何豆子被注射之前执行@BeforeMethod
在注入bean之后执行。但不知道它到底是如何影响的。ecr0jaav8#
在我的例子中,我正在处理一个不使用maven构建系统的项目。所以这就是我的工作。
导航到mockito的maven回购(使用v2.26):https://mvnrepository.com/artifact/org.mockito/mockito-core/2.26.0. 我下载了jar。
在底部的同一页上,我查找了依赖项。对于mockito 2.26.0,这些依赖项是:
字节5.1.9.10(https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy/1.9.10)
byte buddy java代理v1.9.10(https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy-agent/1.9.10)
对象2.6版(https://mvnrepository.com/artifact/org.objenesis/objenesis/2.6)我在eclipse中下载了上述mockito依赖项的jar文件,创建了一个包含四个jar文件的用户库,并将其添加到我的项目中。
注意:(创建库是可选的,您可以直接将jar添加到您的项目构建路径)
希望这对别人有帮助。
vfh0ocws9#
我也遇到了同样的问题,尝试了@paskas的解决方案,一开始效果不错。已将bytebuddy依赖项添加到my pom.xml:
希望这有帮助。
von4xj4u10#
对我来说,问题是intellij将测试作为集成测试运行。所以我需要手动创建junit测试
mxg2im7a11#
mockito2需要依赖项。添加下面的两个bytebuddy依赖项。为我解决了问题:
byte-buddy-x.x.xx.jar
byte-buddy-agent-x.x.xx.jar
在我的例子中,我在项目中包含jar文件,可以在以下位置找到:https://bintray.com/raphw/maven/bytebuddy/
如果maven项目需要它,只需添加:
ugmeyewa12#
如果您使用的是powermock,请确保依赖项指向:
而不是
vnzz0bqm13#
我对mockito的依赖是在androidtestimplementation下,而不是在testimplementation下。
当我尝试在单元测试中使用mockito时,我也遇到了同样的错误。我所要做的就是添加依赖项。
vzgqcmou14#
在我的例子中,一些异常的env设置也会导致这个错误:
在ubuntu16.04中,java和javac是7的更新替代品,但是$javau home被错误地设置为8
我把$javau搬回家,一切恢复正常
olhwl3o215#
如果启用模拟final类的选项,mockito2就会出现此问题。
这意味着当您在test/resources/mockito extensions目录中有一个名为org.mockito.plugins.mockmaker的文件,该文件内联有以下内容mock maker。
在这种情况下,byte-buddy是mockito核心的一个可传递依赖项,它在将自己的代理附加到java进程时遇到了问题。但是只有在使用jre时才会出现问题。
解决方案是:
使用jdk而不是jre
或
添加
-javaagent:byte-buddy-agent-*.jar
作为虚拟机选项