Sto cercando di utilizzare PowerMock per deridere alcune classi utilizzate nel testare la nostra app Android (BluetoothSocket per esempio).VerifyError con PowerMock su Android
Ho scaricato il file zip sulla pagina di codice google di PowerMock con tutte le dipendenze e le ho aggiunte al mio progetto di test Android (incluso il percorso di compilazione).
Tuttavia quando provo ad usare PowerMock come questo:
@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();
}
}
ottengo il seguente stack trace:
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
ho solo questo errore durante l'esecuzione del progetto di test come JUnit test Android , se lo eseguo come un normale test di JUnit, powermock funziona, ma poi tutti i miei test che richiedono il framework Android falliscono naturalmente.
Come posso risolvere questo? Sono molto nuovo ai test unitari quindi non capisco ancora tutti i concetti.
Hai risolto? –