2012-07-03 11 views
6

私は、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フレームワークを必要とするすべてのテストは自然に失敗します。

どうすればこの問題を解決できますか?私は単体テストには非常に新しいので、まだすべての概念を理解していません。

+0

解決しましたか? –

答えて

2

Androidのテストのクラスパス設定にあいまいなバージョンのJUnitライブラリがある可能性があります。 JUnit 3または4で動作しようとしていますか?あなたのコードは4の注釈を使用していますが、3のTestCase基底クラスも拡張しています。この2つを組み合わせることはできません。現在、JUnit 4を使用するのが最善です。私はAndroid開発にあまり慣れていないので、Android環境が探しているJUnitのバージョンを確認してください。次に確認するのは、JUnit 3と4のバージョンが異なるため、正しいバージョンのPowerMockを使用している場合です。

関連する問題