Как использовать Mockito с dexmaker для тестирования Android?

Я пытаюсь получить Mockito (1.9.5 rc1), работающий в тестах на Android (с использованием Robotium). Для его запуска на DVM я помещаю dexmaker.jar и dexmaker-mockito.jar (v 0.9) в путь класса тестового проекта.

При запуске после теста в качестве теста Android JUnit в Eclipse:

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: с файлами .jar из https://github.com/paulbutcher/mockito-on-android/tree/master/WarehouseManagerTest/libs все работает плавно, хотя он использует устаревший снимок Mockito на основе 1.9.1

Solutions Collecting From Web of "Как использовать Mockito с dexmaker для тестирования Android?"

Я столкнулся с такой же проблемой, пытаясь использовать mockito 1.9.5-rc1.

На странице dexmaker указано , что для этого вам потребуется 1.9.5+ , и, по-видимому, RC1 не сокращает его. Mockito 1.9.5, похоже, только что был выпущен несколько дней назад , поэтому он вскоре появится в Maven Central.

Тем временем вы можете скачать 1.9.5 zip с сайта Mockito . Если вы используете Maven, вы можете вручную установить эти банки в локальное репо с помощью mvn install:install-file . Я также получил это для работы, проверив последний источник Mockito (невыпущенный 1.9.8), построив и установив его на мой местный репозиторий Maven.