java - JMockIt falla con AgentInitializationException: el agente JAR se cargó pero el agente no pudo inicializarse
eclipse eclipse-plugin (2)
Esperaría que @RunWith(JMockit.class)
debería haber @RunWith(JMockit.class)
este problema.
En cualquier caso, desde el tutorial de JMockit aquí , hay algunas notas que debe verificar, en caso de que resuelvan su problema. En particular, estos dos parecen ser los más relevantes:
- (Nota para los usuarios de Eclipse: al especificar el orden de los archivos jar en classpath, asegúrese de usar la pestaña "Ordenar y exportar" de la ventana "Java Build> Ruta". Además, asegúrese de que el proyecto Eclipse utiliza el JRE de un JDK> instalación en lugar de un JRE "simple", ya que este último carece de la biblioteca nativa "adjuntar").
- En otras situaciones (como ejecutar en implementaciones JDK que no sean> Oracle JDK), es posible que deba pasar "-javaagent: ruta> /jmockit.jar" como un parámetro de inicialización de JVM. Esto se puede hacer en> la "Configuración de ejecución / depuración" para Eclipse e IntelliJ IDEA, o con herramientas de compilación como Ant y Maven.
Estoy desarrollando un plugin para Eclipse Kepler. Agregar @RunWith (JMockit.class) a mi clase de prueba provoca el siguiente error:
JMockit: Reinitializing under custom class loader org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@b7ccec1[com.mypackage.myclass:2.3.9.201508161221(id=1)]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:407)
Caused by: java.lang.VerifyError
at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method)
at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:170)
at mockit.internal.startup.Startup.redefineMethods(Startup.java:242)
at mockit.internal.startup.Startup.redefineMethods(Startup.java:236)
at mockit.internal.mockups.MockClassSetup.applyClassModifications(MockClassSetup.java:134)
at mockit.internal.mockups.MockClassSetup.redefineMethodsInClassHierarchy(MockClassSetup.java:91)
at mockit.internal.mockups.MockClassSetup.redefineMethods(MockClassSetup.java:76)
at mockit.MockUp.redefineMethods(MockUp.java:240)
at mockit.MockUp.redefineClassOrImplementInterface(MockUp.java:222)
at mockit.MockUp.<init>(MockUp.java:131)
at mockit.integration.junit4.internal.RunNotifierDecorator.<init>(RunNotifierDecorator.java:21)
at mockit.internal.startup.JMockitInitialization.loadInternalStartupMocksForJUnitIntegration(JMockitInitialization.java:42)
at mockit.internal.startup.JMockitInitialization.initialize(JMockitInitialization.java:27)
at mockit.internal.startup.Startup.applyStartupMocks(Startup.java:72)
at mockit.internal.startup.Startup.reapplyStartupMocks(Startup.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at mockit.internal.util.MethodReflection.invoke(MethodReflection.java:94)
at mockit.internal.util.MethodReflection.invoke(MethodReflection.java:159)
at mockit.internal.startup.Startup.reinitializeJMockitUnderCustomClassLoader(Startup.java:118)
at mockit.internal.startup.Startup.agentmain(Startup.java:101)
... 6 more
java.lang.IllegalStateException: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:156)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:82)
at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:91)
at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication$1.run(AbstractUITestApplication.java:35)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4145)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3762)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31)
at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:120)
at org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: com.sun.tools.attach.AgentInitializationException: Agent JAR loaded but agent failed to initialize
... 39 more
¿Estoy haciendo algo mal o es un error de JMockIt? Estoy usando la versión JMockIt 1.18, JUnit 4.12
Haga clic derecho en su proyecto en Package Explorer
haga clic en Propiedades. ir a Java Build Path. Pestaña Bibliotecas haga clic en el botón "Agregar biblioteca", seleccione JUnit, haga clic en Siguiente. Deberías poder manejarlo desde allí.
Después de eso, si usa cobertura como: podrá ver la cobertura.