how all mockito

all - mockito verify



No se pudo inicializar el complemento: interfaz org.mockito.plugins.MockMaker (18)

Recibo la siguiente excepción una vez que se inician las pruebas:

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)

Esta es mi prueba:

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); } }

Estoy usando NetBeans 8.2. Descargué mockito-core-2.7.0.jar, y luego seleccioné "Test Libraries" -> "Add Jar" y agregué mockito-core-2.7.0.jar.

Classpath y todo se ve bien, todavía estoy recibiendo una excepción.

¿Algún consejo?


Problema: PowerMock + Mockito + TestNG + PowerMockTestCase

Compartir mi problema / solución en caso de que ayude a alguien.

Mis dependencias fueron todas apuntadas correctamente:

testImplementation ''org.mockito:mockito-core:2.8.47'' testImplementation ''org.powermock:powermock-core:1.7.4'' testImplementation ''org.powermock:powermock-module-testng:1.7.4'' testImplementation ''org.powermock:powermock-api-mockito2:1.7.4''

Pero todavía recibí el siguiente error:

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.$Proxy11.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:186) at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:180) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62) at org.mockito.Mockito.mock(Mockito.java:1729) at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:33) 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)

Mi prueba fue algo así:

import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import static org.mockito.MockitoAnnotations.initMocks; @PrepareForTest(MyClass.class) public class MyTest extends PowerMockTestCase { @BeforeTest public void init() { initMocks(this); } }

Como se menciona en este hilo, eliminar el método initMocks() elimina el error, pero todos los simulacros se vuelven nulos.

✅ Solución: BeforeTest VS BeforeMethod

Lo que descubrí para mi caso es que @BeforeTest realmente estaba planteando un problema. @BeforeMethod a @BeforeMethod resolvió el error.

import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import static org.mockito.MockitoAnnotations.initMocks; @PrepareForTest(MyClass.class) public class MyTest extends PowerMockTestCase { @BeforeMethod // CHANGE THIS! public void init() { initMocks(this); } }

Mi conjetura es que tiene algo que ver con la inyección de frijoles; @BeforeTest se ejecuta antes de que se inyecte cualquier @BeforeMethod mientras que @BeforeMethod se ejecuta después de la inyección de beans. Sin embargo, no estoy seguro de cómo realmente afectó.


Eliminar la declaración de versión me funciona:

Ejemplo:

<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.8.9</version> <scope>test</scope> </dependency>

eliminar 2.8.9

Después:

<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency>

Puede deberse a un problema de versión entre los paquetes jar de esta dependencia.


Elimine el "byte-buddy-1.7.11.jar" manualmente de la ruta del repositorio maven que aparece en el error. Maven actualiza el proyecto y el problema se resolverá. Intenté y trabajé para mí.


En mi caso, estaba trabajando en un proyecto que no utiliza el sistema de construcción maven. Entonces esto es lo que funcionó para mí.

NB: (la creación de la biblioteca es opcional, puede agregar los frascos directamente a la ruta de compilación del proyecto)

Espero que esto ayude a alguien.



Este problema con Mockito2 ocurre si habilita la opción de burlarse de las clases finales.

Esto significa que en su directorio test / resources / mockito-extensions tiene el archivo llamado org.mockito.plugins.MockMaker con el siguiente contenido simulacro-maker-inline .

En ese caso, byte-buddy, que es una dependencia transitiva para mockito-core, tiene el problema de adjuntar un agente propio al proceso de Java. Pero el problema ocurre solo cuando usa JRE.

La solución sería:

  • Use JDK en lugar de JRE

o

  • agregue -javaagent:byte-buddy-agent-*.jar como una opción de VM

Falta referencia a:

  • byte-buddy-1.6.5.jar
  • byte-buddy-agent-1.6.5.jar
  • objenesis-2.5.jar

Desde Mockito 2.0.2 beta, Mockito-core tiene dependencias.


He tenido el mismo problema en un proyecto existente. Utilicé Java 8 e instalé Java 10. Además, comencé a obtener esta excepción. Desinstalé Java 10, no ha ayudado. Eliminé los frascos bytebuddy del repositorio de maven, no ha ayudado. Solo después de la eliminación completa de todos los frascos de Maven Repo pude compilar el proyecto nuevamente.


Mockito 2 requiere dependencias. Agregando las dos dependencias ByteBuddy a continuación. me resolvió el problema:

  • byte-buddy-xxxx.jar
  • byte-buddy-agent-xxxx.jar

En mi caso, incluyo archivos jar en el proyecto, que se pueden encontrar en: https://bintray.com/raphw/maven/ByteBuddy/

Si lo necesita para un proyecto Maven, simplemente agregue:

<dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.9.14</version> <type>pom</type> </dependency>


No es la respuesta al póster original, ya que está usando Netbeans, pero en Eclipse necesitaba hacer "Maven -> Actualizar proyecto" para que las pruebas funcionen nuevamente.


Si está utilizando powermock, asegúrese de que sus dependencias apunten a:

org.powermock:powermock-api-mockito2

en vez de

org.powermock:powermock-api-mockito


Simplemente actualice a la última versión de org.mockito:mockito-core . Una vez que lo hice, ¡los errores desaparecieron!


Tenía Byte Buddy en classpath (es dep transitivo de Mockito 2.8.9) y todavía tengo la excepción. La razón para mí fue que ejecuté las pruebas de la Unidad con JRE en lugar de JDK. Cambiar a JDK funcionó para mí.


Tuve el mismo problema y probé la solución de @ Paskas, funcionó bien Junit Test ok al principio. agregué la dependencia bytebuddy a mi pom.xml:

<dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-dep</artifactId> <version>1.9.7</version> </dependency>

Espero que esto ayude.


Tuve el mismo problema: el mismo stacktrace aparece en mi registro. Normalmente es un problema con la configuración del proyecto ... O
El problema puede estar en los JAR de bytebuddys si no se descargaron correctamente.
Cuando intento verificar la clase ClassLoadingStrategy manualmente, aparece un error zip .

En ese caso, es suficiente eliminar manualmente el Byte Buddy del directorio local de Maven, generalmente ubicado en:
{inicio} /. m2 / repositorio / net / bytebuddy /

El próximo intento de ejecutar un proyecto o prueba se descargarán nuevamente y deberían funcionar como se espera.

Desafortunadamente, Java ClassLoader común se enfrenta de la misma manera cuando faltan clases o jar, así como cuando el jar está dañado.


Tuve la misma excepción cuando cambié a Java 10 y Spring Boot 2. Esta combinación de dependencia funcionó para mí:

<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>2.0.2-beta</version> <scope>test</scope> </dependency> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.8.16</version> </dependency> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-agent</artifactId> <version>1.8.16</version> <scope>test</scope> </dependency>


en mi caso, alguna configuración de entorno anormal también conducirá a este error:

en ubuntu 16.04, java y javac habían sido alternativas de actualización a 7 pero $ JAVA_HOME se había configurado incorrectamente a 8

elimino $ JAVA_HOME y todo vuelve a la normalidad


Agregar un aspecto bnd a esto

Agregando a la respuesta de Paskas , también debe incluir las dependencias en el repositorio cnf maven, si está usando una (como mi cnf/central.mvn ).

org.mockito:mockito-core:2.21.0 net.bytebuddy:byte-buddy:1.8.15 net.bytebuddy:byte-buddy-agent:1.8.15 org.objenesis:objenesis:2.6

y para una referencia conveniente, puede incluir una variable bnd en su 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

y en el archivo bnd de tu proyecto

-testpath:/ ${mockito}