Estoy tratando de usar PowerMock para simular algunas clases utilizadas en la prueba de nuestra aplicación de Android (BluetoothSocket, por ejemplo).VerifyError con PowerMock en Android
He descargado el archivo comprimido en la página de códigos de Google de PowerMock con todas las dependencias y las he agregado a mi proyecto de prueba de Android (incluida la ruta de compilación).
Sin embargo, cuando intento utilizar PowerMock así:
@RunWith(PowerMockRunner.class)
@PrepareForTest(NetworkUtil.class)
public class TestSendAck extends TestCase{
@Test
public void testGenerateURL() {
PowerMock.mockStatic(NetworkUtil.class);
EasyMock.expect(NetworkUtil.getLocalHostname()).andReturn("triumph");
PowerMock.replayAll();
PowerMock.verifyAll();
}
}
consigo el seguimiento de pila:
java.lang.ExceptionInInitializerError
at org.easymock.internal.ClassProxyFactory.createEnhancer(ClassProxyFactory.java:249)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:159)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:59)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.mockStatic(PowerMock.java:287)
at se.metrima.mafield.test.TestSendAck.testGenerateURL(TestSendAck.java:19)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
Caused by: java.lang.VerifyError: net.sf.cglib.core.ReflectUtils
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:166)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
... 19 more
sólo consigo este error cuando se ejecuta el proyecto de prueba como una prueba JUnit Android , si lo ejecuto como una prueba de JUnit normal powermock funciona, pero entonces todas mis pruebas que necesitan el marco Android naturalmente falla.
¿Cómo puedo solucionar esto? Soy muy nuevo en las pruebas unitarias, así que realmente no entiendo todos los conceptos.
¿Lo has resuelto? –