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é "Probar bibliotecas" -> "Agregar Jar" y agregué mockito-core-2.7.0.jar.
Classpath y todo se ve bien, todavía tengo una excepción.
¿Algún consejo?
Respuestas:
Si está utilizando powermock, asegúrese de que sus dependencias apunten a:
en vez de
fuente
Falta una referencia a:
Desde Mockito 2.0.2 beta, Mockito-core tiene dependencias.
fuente
mockito 2.25.1
solo necesitasobjenesis-3.0.1.jar
ybyte-buddy-1.9.12.jar
.Tenía Byte Buddy en classpath (es un depósito transitivo de Mockito 2.8.9) y todavía tengo la excepción. La razón para mí fue que ejecuté las pruebas unitarias con JRE en lugar de JDK. Cambiar a JDK funcionó para mí.
fuente
Tuve el mismo problema: el mismo seguimiento de pila aparece en mi registro. Normalmente es un problema con la configuración del proyecto ... O
El problema puede estar en los archivos JAR de bytebuddys si no se descargaron correctamente.
Cuando intento verificar la clase ClassLoadingStrategy manualmente, aparece un error de zip .
En ese caso, es suficiente eliminar manualmente el Byte Buddy del directorio local de maven, generalmente ubicado en:
{home} /. M2 / repository / net / bytebuddy /
El próximo intento de ejecutar el proyecto o la prueba se descargarán nuevamente y deberían funcionar como se esperaba.
Desafortunadamente, el Java ClassLoader común se enfrenta de la misma manera cuando falta la clase o el jar y el jar está dañado.
fuente
net.bytebuddy*
como dependencia, por lo que las dependencias pueden estar en conflicto entre sí.Este problema con Mockito2 ocurre si habilitas la opción de simular clases finales.
En ese caso, byte-buddy, que es una dependencia transitiva para mockito-core, tiene el problema de adjuntar su propio agente al proceso java. Pero el problema ocurre solo cuando usa JRE.
La solución sería:
o
-javaagent:byte-buddy-agent-*.jar
como una opción de VMfuente
Problema: PowerMock + Mockito + TestNG + PowerMockTestCase
Compartiendo mi problema / solución en caso de que ayude a alguien.
Todas mis dependencias se señalaron 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 tengo el siguiente error:
Mi prueba fue algo como tal:
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
initMocks()
método elimina el error, pero todas las simulaciones se vuelven nulas.✅ Solución: BeforeTest VS BeforeMethod
Lo que descubrí para mi caso es que en
@BeforeTest
realidad estaba planteando un problema. Cambiarlo para@BeforeMethod
resolver 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); } }
Supongo que tiene algo que ver con la inyección de frijoles;
@BeforeTest
se ejecuta antes de que se inyecten los beans mientras que@BeforeMethod
se ejecuta después de la inyección de beans. Sin embargo, no estoy seguro de cómo afectó realmente.fuente
En mi caso, estaba trabajando en un proyecto que no usa el sistema de compilació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 construcción de su proyecto)
Espero que esto ayude a alguien.
fuente
Elimine "byte-buddy-1.7.11.jar" manualmente de la ruta del repositorio de maven que aparece en el error. Maven actualiza el proyecto y el problema se resolverá. Intenté y funcionó para mí.
fuente
Mockito 2 requiere dependencias. Añadiendo las dos dependencias ByteBuddy a continuación. resolvió el problema para mí:
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 de Maven, simplemente agregue:
fuente
Para mí, el problema fue que IntelliJ ejecutó la prueba como prueba de integración. Entonces necesitaba crear la prueba JUnit manualmente
fuente
en mi caso, alguna configuración de env 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 en 8
elimino $ JAVA_HOME y todo vuelve a la normalidad
fuente
Añadiendo un aspecto bnd a esto
Además de la respuesta de Paskas , también debe incluir las dependencias en el repositorio de cnf maven, si está usando uno (como el mío
cnf/central.mvn
).y para una referencia conveniente, puede incluir una variable bnd en su
cnf/build.bnd
y en el archivo bnd de su proyecto
fuente
He tenido el mismo problema en un proyecto existente. Usé Java 8 y, además, instalé Java 10. Así que comencé a obtener esta excepción. Desinstalé Java 10, no ha ayudado. Eliminé los frascos de bytebuddy del repositorio de maven, no ha ayudado. Solo después de la eliminación completa de todos los frascos del repositorio de maven, pude compilar el proyecto nuevamente.
fuente
Eliminar la declaración de versión funciona para mí:
Ejemplo:
eliminar 2.8.9
Después:
Puede deberse a un problema de versión entre los paquetes jar de esta dependencia.
fuente
No es la respuesta al póster original, ya que usa Netbeans, pero en Eclipse necesitaba hacer "Maven -> Actualizar proyecto" para que las pruebas funcionen nuevamente.
fuente
Encontré este problema y lo resolví mejorando mi versión de org.mockito.mockito-core a la última versión. Había estado usando una versión anterior durante bastante tiempo.
fuente
Resolví este problema eliminando jmockit en POM XML para Maven. Después de eso, mis pruebas de Junit 5 funcionan perfectamente.
Con esta dependencia siempre obtengo un error como:
fuente
Defina explícitamente la dependencia de mockito como la versión en su powermock y springboot difiere del grupo testCompile: 'org.mockito', nombre: 'mockito-core', versión: '2.8.9'
fuente
Mi dependencia de mockito estaba bajo androidTestImplementation y no bajo testImplementation.
Recibí el mismo error cuando intenté usar mockito con mis pruebas unitarias. Todo lo que tenía que hacer era agregar la dependencia.
fuente
En mi caso, después de quitarlo
mockito-core
, ¡la prueba funcionó!<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency>
Mi versión está aquí y JDK es 1.8.0_121.
<properties> <powermock.version>2.0.7</powermock.version> <mockito.version>2.8.9</mockito.version> </properties>
Ahora mis dependencias son:
fuente
Tuve la misma excepción cuando cambié a Java 10 y Spring Boot 2. Esta combinación de dependencia funcionó para mí:
fuente
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:
Espero que esto ayude.
fuente
Simplemente actualice a la última versión de
org.mockito:mockito-core
. Una vez que lo hice, ¡los errores desaparecieron!fuente