Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo usar Mockito con dexmaker para la prueba de Android?

Estoy tratando de obtener Mockito (1.9.5 rc1) trabajando en mis pruebas de Android (utilizando Robotium). Para hacer que funcione en el DVM puse dexmaker.jar y el dexmaker-mockito.jar (v 0.9) en el classpath del proyecto de prueba.

Cuando se ejecuta la siguiente prueba como prueba Android JUnit en 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"); } } 

Obtengo la siguiente traza de pila:

 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 

¿Alguna sugerencia? Http://code.google.com/p/dexmaker/ y http://code.google.com/p/mockito/wiki/ReleaseNotes no proporcionan ninguna información útil.

Un problema similar parece ser reportado aquí: http://www.paulbutcher.com/2012/05/mockito-on-android-step-by-step/#comment-65955

UPDATE: con los archivos .jar de https://github.com/paulbutcher/mockito-on-android/tree/master/WarehouseManagerTest/libs todo funciona sin problemas, aunque utiliza una instantánea obsoleta de Mockito basada en 1.9.1

One Solution collect form web for “¿Cómo usar Mockito con dexmaker para la prueba de Android?”

Encontré el mismo problema intentando usar mockito 1.9.5-rc1.

La página del dexmaker señala que usted necesita 1.9.5+ para esto, y al parecer RC1 no lo corta. Mockito 1.9.5 parece que acaba de ser lanzado hace días , por lo que debería aparecer en breve en Maven Central.

Mientras tanto, puede descargar la versión 1.9.5 del sitio de Mockito . Si está utilizando Maven, puede instalar manualmente esos frascos en su repo local con mvn install:install-file . También conseguí esto para trabajar comprobando la fuente más reciente de Mockito (unreleased 1.9.8), construyendo, e instalando a mi repo local de Maven.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.