Я пытаюсь протестировать этот простой метод, и я просто хочу убедиться, что в конце ViewGroup имеет только 1 дочерний View.
Дело в том, что мое приложение не имеет контекста или макетапоэтому я попытался создать MockContext (), но я все еще получаю ту же ошибку, когда он пытается изменить видимость ImageView: «Метод setVisibility в android.widget.ImageView not mocked» Примечание: CloudPearView расширяет ViewGroup
Метод(В классе ViewHandler, реализующем интерфейс с именем IViewHandler):
public void showAd(AdInfo adInfo) {
ViewGroup viewGroup = cloudPearView.getViewFromSlot(adInfo.getViewPlace());
switch(adInfo.getMediaType()){
case IMAGE:
DisplayImage(viewGroup,adInfo);
break;
case VIDEO:
DisplayVideo(viewGroup,adInfo);
break;
}
}
private void DisplayImage(ViewGroup viewGroup, AdInfo adInfo) {
ImageView newImgView = new ImageView(cloudPearView.getContext());
newImgView.setVisibility(View.INVISIBLE);
RelativeLayout.LayoutParams layoutParams = getDisplayType(DISPLAY_TYPE);
newImgView.setLayoutParams(layoutParams);
newImgView.setAdjustViewBounds(true);
newImgView.setImageBitmap(MediaLoader.loadImage(adInfo.getId()));
viewGroup.removeAllViews();
newImgView.setVisibility(View.VISIBLE);
viewGroup.addView(newImgView);
}
Тест:
@Test
public void OnCall_ShowAd_DeletesAllOldViewGroupViews() throws PearException.ResourceNotFound {
// Arrange
IViewHandler iViewHandler = new ViewHandler();
CloudPearView cloudPearView = mock(CloudPearView.class);
AdInfo adInfo = new AdInfo(1550624700L,"images/1534010826237-b53902d7-fb56-455b-827d-cfba0b36e69c.jpg",1,AdInfo.MediaType.IMAGE);
ViewGroup viewGroup = mock(ViewGroup.class);
when(cloudPearView.getContext()).thenReturn(new MockContext());
when(cloudPearView.getViewFromSlot(1)).thenReturn(viewGroup);
// Act
iViewHandler.register(cloudPearView);
iViewHandler.showAd(adInfo);
// Assert
verify(viewGroup).removeAllViews();
}
После тестирования я получаю эту ошибку:
java.lang.RuntimeException:Метод setVisibility в android.widget.ImageView не издевается.Подробнее см. http://g.co/androidstudio/not-mocked.