Пытаюсь протестировать метод, но получаю «Метод setVisibility в android.widget.ImageView не осмеивается» - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь протестировать этот простой метод, и я просто хочу убедиться, что в конце 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.

...