Espresso inyectando un objeto simulador presentador

Estoy tratando de conocer mejor el marco espresso para las pruebas en android, sin embargo, estoy teniendo un problema tratando de burlarse de mi presentador.

En primer lugar estoy usando alguna arquitectura MVP adaptada en mi aplicación, por lo tanto, estoy usando algo como Ver (Actividad) -> Presentador -> Modelo -> Presentador -> Ver, para hacer una solicitud y actualizar la interfaz de usuario.

Mi actividad una vez creada hará una solicitud para actualizar toda la interfaz de usuario y una vez que el resultado se recibe actualiza la interfaz de usuario en consecuencia.

public class MyActivity extends AppCompatActivity implements IPresenter{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_activity); new Presenter().doRequestToUpdateUI(); } @Override public void onResponseReceived(UIObject uiOject){ findViewById(R.id.button).setVisibility(uiOject.getVisibility()); } } 

Sin embargo, este doRequestToUpdateUI () necesita alguna autenticación previa y por lo tanto el presentador de agujero necesita ser burlado, con el fin de probar la otra interfaz de usuario en mi actividad.

¿Hay una manera de burlarse de mi presentador e inyectarlo a la actividad, o al menos no hacer nada cuando se llama al método doRequestToUpdateUI ().

Estoy haciendo mi prueba como esta, pero hasta ahora no funciona.

 @LargeTest @RunWith(AndroidJUnit4.class) public class MyActivityInstrumentationTest { @Mock public Presenter presenter; @InjectMocks public PresenterMock mPresenterMock; @Rule public ActivityTestRule<MyActivity> mActivityTestRule = new ActivityTestRule<MyActivity>(MyActivity.class, true, false) { @Override protected void beforeActivityLaunched() { presenter = Mockito.mock(Presenter.class); Mockito.doNothing().when(presenter).doRequestToUpdateUI(); super.beforeActivityLaunched(); } }; @Test public void simpleTestCheck() { mActivityTestRule.launchActivity(new Intent()); //here I should call the onResponseReceived() with a mock object however the presenter is not being injected widthId(R.id.button).matches(isDisplayed()); } } 

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