Mocking Intent Extras en Espresso Tests

Estoy tratando de lanzar Activity en Espresso. La cosa es que quiero poner mocked extras a la Intent que estoy usando para iniciar la Activity . Aquí está el ejemplo.

 @RunWith(AndroidJUnit4.class) public final class NiceActivityTester { @Rule public final ActivityTestRule<NiceActivity> activityRule = new ActivityTestRule<>(NiceActivity.class, true, false); @Test public void justStartPlease() { NiceThing niceThing = Mockito.mock(NiceThing.class); Mockito.when(niceThing.getName()).thenReturn("Nice!"); Intent intent = new Intent(InstrumentationRegistry.getTargetContext(), NiceActivity.class); intent.putExtra("NICE_THING", niceThing); activityRule.launchActivity(intent); } } 

Lamentablemente unmarshalling Parcelable falla.

 java.lang.RuntimeException: Unable to start activity ComponentInfo{app.application/app.application.activity.NiceActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: NiceThing_Proxy at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: NiceThing_Proxy at android.os.Parcel.readParcelableCreator(Parcel.java:2295) at android.os.Parcel.readParcelable(Parcel.java:2245) at android.os.Parcel.readValue(Parcel.java:2152) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.Bundle.getParcelable(Bundle.java:755) at android.content.Intent.getParcelableExtra(Intent.java:5088) at app.application.NiceActivity.getNiceThing(NiceActivity.java:40) at app.application.NiceActivity.setUpToolbar(NiceActivity.java:30) at app.application.NiceActivity.onCreate(NiceActivity.java:20) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:534) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 

¿Hay alguna manera de usar los extras Intent con Intent ? Tal vez algunas buenas prácticas en esta área?

Realmente no quiero hacer constructores para cada modelo que estoy usando, algunas de estas clases son bastante complejas con una docena de campos. Espiar el extra o el Intent usando Mockito no ayuda.

Utilice ActivityTestRule y getActivityIntent

Ejemplo encontrado aquí

 public class MainActivityLaunchIntentTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<MainActivity>(MainActivity.class) { @Override protected Intent getActivityIntent() { Context targetContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); Intent result = new Intent(targetContext, MainActivity.class); result.putExtra("Name", "Earth"); return result; } }; @Test public void shouldShowHelloEarth() { onView(withId(R.id.main__tv_hello)).check(matches(withText("Hello Earth!"))); } } 
  • Android Instrumentación de Pruebas - UI Thread Issues
  • Cómo diseñar una aplicación de Android usando daga con la prueba en mente
  • VerifyError en las herramientas de compilación del proyecto de prueba android v17
  • Robolectric: Pruebas con ormlite
  • Android: Escribir casos de prueba para Fragmentos
  • Mono dando un error extraño en el emulador de Android
  • ¿Cómo probar fácilmente las compras en la aplicación sin publicarlas o firmarlas primero?
  • Mockito AbstractMethodError en initMocks
  • Android Espresso - Haga clic en la casilla de verificación si no está marcada
  • Pruebas de JUnit parametrizadas en el proyecto de prueba de Android
  • ¿Es posible establecer pruebas para ejecutar continuamente en Android Studio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.