Ho bisogno sia di Robolectric che di Mockito nel mio test, ognuno propone il proprio TestRunner, cosa devo fare?Nel mio test ho bisogno sia di Robolectric che di Mockito, ognuno propone il proprio TestRunner
ho questo codice:
@RunWith(MockitoJUnitRunner.class)
@EBean
public class LoginPresenterTest {
@Bean
LoginPresenter loginPresenter;
@Mock
private LoginView loginView;
@AfterInject
void initLoginPresenter() {
loginPresenter.setLoginView(loginView);
}
@Test
public void whenUserNameIsEmptyShowErrorOnLoginClicked() throws Exception {
when(loginView.getUserName()).thenReturn("");
when(loginView.getPassword()).thenReturn("asdasd");
loginPresenter.onLoginClicked();
verify(loginView).setEmailFieldErrorMessage();
}
}
Il problema è AndroidAnnotations
non iniettare le dipendenze e ho un NPE quando si cerca di utilizzare LoginPresenter
Qualcuno mi ha detto di usare il costruttore LoginPresenter_
, così in questo modo posso forzare la dipendenza io stesso in questo modo:
LoginPresenter loginPresenter = LoginPresenter_.getInstance_(context);
Al fine di ottenere l'accesso al contesto, ho dovuto passare da test di unità a test di strumentazione Android e fare getInstrumentation().getTargetContext()
ma voglio test di unità, e non quelli di strumentazione.
Così un'altra persona mi ha detto di usare Robolectric
per quello - si suppone che sia in grado di fornirmi un contesto di applicazione.
Tuttavia, quando ho guardato la pagina di ottenere iniziato di Robolectric
, si dice
@RunWith(RobolectricGradleTestRunner.class)
che sta andando a scontrarsi con il mio attuale @RunWith
annotazioni per Mockito, così che cosa devo fare?