私は、PowerMockを使用してAndroidアプリのテストに使用されているクラス(たとえばBluetoothSocket)を模擬しようとしています。AndroidでPowerMockでVerifyErrorを実行する
私はすべての依存関係をPowerMockのGoogleのコード・ページ上のzipファイルをダウンロードし、(パスを構築含む)私の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
をAndroidのJUnitテストとしてテストプロジェクトを実行しているとき、私はこのエラーを取得します私が通常のJUnitテストとして実行すると、powermockは動作しますが、Androidフレームワークを必要とするすべてのテストは自然に失敗します。
どうすればこの問題を解決できますか?私は単体テストには非常に新しいので、まだすべての概念を理解していません。
解決しましたか? –