Ich brauche sowohl Robolectric als auch Mockito in meinem Test, jeder schlägt seinen eigenen TestRunner vor, was mache ich?Ich brauche sowohl Robolectric als auch Mockito in meinem Test, jeder schlägt seinen eigenen TestRunner vor
Ich habe diesen Code:
@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();
}
}
Das Problem ist AndroidAnnotations
nicht die Abhängigkeiten injizieren und ich bekomme eine NPE wenn LoginPresenter
Jemand hat mir gesagt, zu verwenden versuchen, den LoginPresenter_
Konstruktor zu verwenden, so dass ich die Abhängigkeit selbst auf diese Weise injizieren kann:
Um Zugang zu bekommen Kontext, ich musste von Komponententests zu Android Instrumentation Tests wechseln und tun getInstrumentation().getTargetContext()
, aber ich möchte Unit Tests, und nicht Instrumentierung.
So eine andere Person sagte mir, Robolectric
dafür zu verwenden - es soll in der Lage sein, mich mit einem Anwendungskontext zu versorgen.
Allerdings, wenn ich auf der Seite Erste Schritte von Robolectric
sah, heißt es
@RunWith(RobolectricGradleTestRunner.class)
, die mit meiner aktuellen @RunWith
Anmerkung für Mockito kollidieren wird, also was soll ich tun?