VerifyError с PowerMock на Android

Я пытаюсь использовать PowerMock для издевательства над некоторыми классами, используемыми при тестировании нашего приложения для Android (например, BluetoothSocket).

Я загрузил zip-файл на кодовой странице Google PowerMock со всеми зависимостями и добавил их в свой тестовый проект Android (включая путь сборки).

Однако, когда я пытаюсь использовать PowerMock следующим образом:

@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(); } } 

Я получаю следующую трассировку стека:

 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 

Я получаю эту ошибку только при запуске тестового проекта в качестве теста JUnit для Android, если я запускаю его как обычный симулятор проверки подлинности JUnit, но тогда все мои тесты, которые нуждаются в инфраструктуре Android, естественно терпят неудачу.

Как я могу это решить? Я очень новичок в модульном тестировании, поэтому я пока не понимаю все понятия.

У вас могут быть неоднозначные версии библиотек JUnit в настройках классов для ваших тестов под Android. Вы пытаетесь запустить JUnit 3 или 4? Ваш код использует аннотации 4, но также расширяет базовый класс TestCase 3, и вы не можете их смешивать. В настоящее время лучше использовать JUnit 4. Я не слишком хорошо знаком с разработкой Android, поэтому проверьте, какую версию JUnit ищет среда Android. Следующее, что нужно проверить, – это использовать правильную версию PowerMock, так как для JUnit 3 и 4 существуют разные версии.