Tôi cần cả Robolectric và Mockito trong bài kiểm tra của tôi, mỗi người đề xuất TestRunner của riêng họ, tôi phải làm gì?Tôi cần cả hai Robolectric và Mockito trong bài kiểm tra của tôi, mỗi người đề xuất TestRunner riêng của họ
tôi có mã này:
@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();
}
}
Vấn đề là AndroidAnnotations
không tiêm phụ thuộc và tôi nhận được một NPE khi cố gắng sử dụng LoginPresenter
Có người nói với tôi để sử dụng các nhà xây dựng LoginPresenter_
, vì vậy để tôi có thể tự ép mình phụ thuộc theo cách này:
LoginPresenter loginPresenter = LoginPresenter_.getInstance_(context);
Để truy cập vào ngữ cảnh, tôi đã phải chuyển từ Bài kiểm tra đơn vị sang Kiểm tra thiết bị Android và thực hiện getInstrumentation().getTargetContext()
nhưng tôi muốn Kiểm tra đơn vị chứ không phải các thiết bị đo đạc.
Vì vậy, một người khác bảo tôi sử dụng Robolectric
cho điều đó - đó là nghĩa vụ phải có khả năng cung cấp cho tôi ngữ cảnh Ứng dụng.
Tuy nhiên, khi tôi nhìn vào việc trang bắt đầu của Robolectric
, nó nói
@RunWith(RobolectricGradleTestRunner.class)
đó đang xảy ra xung đột với @RunWith
chú thích hiện tại của tôi cho Mockito, vì vậy tôi phải làm gì?