Извините за глупые вопросы, я новичок в тестировании в студии Android и не могу найти решения в Интернете. Я пытаюсь проверить, вызывается ли рассматриваемый метод всякий раз, когда вызывается метод в презентаторе или нет.
@Override
public void chooseImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
view.galleryImageSelected(intent);
}
Приведенный выше фрагмент является методом в моем классе презентатора, и, как вы можете видеть, я я вызываю интерфейсный метод просмотра из этой функции. Теперь мне нужно проверить / проверить, что этот фрагмент работает идеально.
@RunWith(MockitoJUnitRunner.class)
public class ExampleUnitTest {
@Mock
private File storageDir;
@Mock
private PackageManager pManager;
@Mock
private Context appContext;
@Mock
private MainActivityContract.View view;
@InjectMocks
private MainActivityPresenter presenter;
@Captor
private ArgumentCaptor<Intent> captor;
@Before
public void setUp() throws Exception {
presenter = new MainActivityPresenter(storageDir, pManager, appContext, view);
}
@Test
public void shouldCallIntentWhenClickedOnCameraClickButton() throws IOException {
presenter.chooseImage();
verify(view).galleryImageSelected(captor.capture());
Intent intent = captor.getValue();
String action = intent.getAction();
String type = intent.getType();
assertThat(action, is(Intent.ACTION_GET_CONTENT));
assertThat(type, is("image/*"));
}
}
Теперь, чтобы проверить метод представления, я должен передать намерение в методе galleryImageSelected (), но поскольку намерение было локальной переменной, как это сделать? Я это тестирую? Должен ли я издеваться над намерением переменной, а затем передавать, и если да, как издеваться над переменной намерения.
Также, если я делаю следующее:
@Test
public void shouldCallIntentWhenClickedOnCameraClickButton() throws IOException {
presenter.chooseImage();
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
verify(view).galleryImageSelected(intent);
}
Я получаю следующая ошибка при тестировании:
Argument(s) are different! Wanted:
view.galleryImageSelected(null);
-> at com.example.imagepicker.ExampleUnitTest.shouldCallIntentWhenClickedOnCameraClickButton(ExampleUnitTest.java:52)
Actual invocation has different arguments: