2012-09-27 11 views
6

Androidテスト(Robotiumを使用)でMockito(1.9.5 rc1)を使用しようとしています。 DVM上で動作させるために、私はdexmaker.jarとdexmaker-mockito.jar(v 0.9)をテストプロジェクトのクラスパスに入れました。Androidテスト用のMockitoとdexmakerの使い方

EclipseでAndroidのJUnitテストとしてテストを実行し、以下:

package com.stampay.pos.test; 

import roboguice.RoboGuice; 
import android.app.Application; 

import com.jayway.android.robotium.solo.Solo; 
import com.stampay.pos.activities.HomeActivity; 
import com.stampay.pos.model.Consumer; 
import com.stampay.pos.util.ScannerAndroid; 

import static org.mockito.Mockito.*; 

public class HomeActivityTest extends ActivityTest<HomeActivity> { 
    private Solo solo; 
    Application app; 

    public HomeActivityTest() { 
     super(HomeActivity.class); 

    } 

    @Override 
    public void setUp() throws Exception { 
     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    @Override 
    public void tearDown() throws Exception { 
     solo.finishOpenedActivities(); 
     RoboGuice.util.reset(); 
    } 

    public void testScan() throws Exception { 

     ScannerAndroid scanner = (ScannerAndroid) getActivity().getScannerHelper(); 

     Consumer mockConsumer = mock(Consumer.class); 

     //scanner.generateResult("consumer1"); 
    } 
} 

私は次のスタックトレースを取得:

java.lang.ExceptionInInitializerError 
at com.stampay.pos.test.HomeActivityTest.testScan(HomeActivityTest.java:41) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) 
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) 
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584) 
Caused by: java.lang.ExceptionInInitializerError 
at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40) 
at org.mockito.Mockito.<clinit>(Mockito.java:932) 
... 15 more 
Caused by: java.lang.ExceptionInInitializerError 
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21) 
... 17 more 
Caused by: org.mockito.exceptions.misusing.MockitoConfigurationException: Failed to load interface org.mockito.plugins.MockMaker using jar:file:/data/app/com.stampay.pos.test-2.apk!/mockito-extensions/org.mockito.plugins.MockMaker 
... 15 more 
Caused by: java.lang.ClassNotFoundException: com.google.dexmaker.mockito.DexmakerMockMaker 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:133) 
at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:102) 
at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:61) 
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21) 
at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40) 
at org.mockito.Mockito.<clinit>(Mockito.java:932) 
... 15 more 

任意の提案ですか? http://code.google.com/p/dexmaker/およびhttp://code.google.com/p/mockito/wiki/ReleaseNotesは、有用な情報を提供していません。

同様の問題は、ここで報告しているようだ:http://www.paulbutcher.com/2012/05/mockito-on-android-step-by-step/#comment-65955

UPDATE: https://github.com/paulbutcher/mockito-on-android/tree/master/WarehouseManagerTest/libsから.jarファイルを持つすべての彼は私が1.9.1

+0

私は同じ問題が発生しています。私は依存関係を含めてMavenを使用していますが、com.google.dexmaker.mockito.DexmakerMockMakerクラスが見つからないという同じエラーが発生しています。 –

+0

また、私はProGuardによって削除されているのを見ましたが、明示的にDexmakerMockMakerクラスを維持しようとしました。 –

答えて

3

に基づいてMockitoの時代遅れのスナップショットを使用しても、スムーズに動作しますmockito 1.9.5-rc1を使用しようと同じ問題が発生しました。

dexmakerページnotes that you need 1.9.5+これは、明らかにRC1はカットしません。 Mockito 1.9.5 appears to have just been released days agoです。まもなくMaven Centralに表示されるはずです。

その間は、download the 1.9.5 zip from Mockito's siteとすることができます。 Mavenを使用している場合は、mvn install:install-fileを使用してローカルリポジトリに手動でjarファイルをインストールできます。最新のMockitoソース(未リリース1.9.8)をビルドし、私のローカルMavenリポジトリにインストールすることで、これを動作させることもできました。

関連する問題