ssefeature partitionsloader partitions org not initialize could amazonaws java jmockit

java - partitionsloader - JMockit-problema de inicialización



java lang noclassdeffounderror could not initialize class com amazonaws partitions partitionsloader (6)

Además de la solution Gary Rowe:

Una integración más robusta (es decir, de la versión y de la ruta del repositorio independiente) de JMockit en Surefire sería

<argLine>-javaagent:${org.jmockit:jmockit:jar}

Para que esta resolución funcione, el complemento de dependencia de maven (versión> = 2.5.1!) Debe configurarse de esta forma:

<plugin> <artifactId>maven-dependency-plugin</artifactId> <version>2.5.1</version> <executions> <execution> <id>getClasspathFilenames</id> <goals> <goal>properties</goal> </goals> </execution> </executions>

Cuando uso la siguiente prueba recibo una ADVERTENCIA:

ADVERTENCIA: JMockit se inicializó a pedido, lo que puede hacer que ciertas pruebas fallen; por favor revise la documentación para ver mejores maneras de inicializarla.

Esta es mi implementación de prueba:

package test; import static mockit.Mockit.*; import junit.framework.TestCase; import mockit.*; import mockit.integration.junit4.*; import org.junit.*; import org.junit.runner.*; import filip.ClassUnderTest; import filip.LowerClass; @RunWith(JMockit.class) public class MockTest extends TestCase { @MockClass(realClass = LowerClass.class) public static class LowerClassMock { @Mock(invocations = 1) public String doWork() { return "Mockowanie dziala :D"; } } @Before public void setUp() { setUpMocks(LowerClassMock.class); } @After public void tearDown() { tearDownMocks(); } @Test public void testJMockit() { ClassUnderTest classUnderTest = new ClassUnderTest(); classUnderTest.print(); } }

¿Algunas ideas?


Como lo entiendo, esta excepción se produce cuando uno intenta llamar a un método JMockit, mientras que JMockit no se ha inicializado correctamente.

Asegúrese de seguir las instrucciones de instalación de JMockit , especialmente los puntos 3 y 4. Si el tarro de JMockit aparece después del tarro de JUnit en la ruta de clase, podría causar problemas.


Configuré un archivo de propiedades en el classpath para facilitar la configuración de Junit 5:

DEBE ser nombrado junit-platform.properties

junit.jupiter.extensions.autodetection.enabled = true junit.jupiter.testinstance.lifecycle.default = per_class

Asegúrese de que está utilizando una versión más reciente de Jmockit que tiene la clase JmockitExtension. NOTA: La versión 1.8 de Jmockit NO ES más nueva que la versión 1.41. La versión 1.8 debería haber sido 1.08.

Referencia de Maven Central: https://mvnrepository.com/artifact/org.jmockit/jmockit


La respuesta aceptada ha quedado un poco desactualizada con respecto a los enlaces, por lo que vale la pena mencionar las distintas soluciones directamente.

Para solucionar este problema, realice una de las siguientes acciones:

1 - Especificar un javaagent

Agregue esto a su entorno de ejecución JUnit (para su versión):

-javaagent:path/to/your/jmockit/jmockit-0.998.jar

2 - configurar el plugin Surefire en Maven para evitarlo

Agregue lo siguiente a su configuración de Maven (elija sus propias versiones)

<!-- JMockit must be before JUnit in the classpath --> <dependency> <groupId>mockit</groupId> <artifactId>jmockit</artifactId> </dependency> <!-- Standard unit testing --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency>

Asegúrese de que su complemento Surefire esté configurado de la siguiente manera (para sus versiones particulares):

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.3</version> <configuration> <argLine>-javaagent:${settings.localRepository}/mockit/jmockit/0.998/jmockit-0.998.jar</argLine> <useSystemClassLoader>true</useSystemClassLoader> </configuration> </plugin>

3 - Usar la anotación JUnit @RunWith

Agregue esta anotación de corredor JUnit en cada clase de prueba

@RunWith(JMockit.class) public class ExampleTest {}


Simplemente agregué:

@RunWith (JMockit.class)

Lo que resolvió el problema, según la documentación en la respuesta aceptada.


Todavía no funciona para mí en IntelliJ. Sin embargo, soy capaz de ejecutarlo.