Mockito验证ArrayList大小

时间:2018-01-16 12:53:44

标签: android mockito

我的适配器具有getItemCount方法,其中ArrayList返回项的大小。我如何用Mockito验证它,因为我对该方法没有任何看法?

static class SongAdapterPresenter implements SortedSongSelectionContract.SongAdapterContract.Presenter {
.....
....
 @Override
        public int getItemCount() {
            return songs != null ? songs.size() : 0;
        }
}

我的Mockito班级代码

@RunWith(PowerMockRunner.class)
@PrepareForTest(Log.class)
public class SongAdapterPresenterTest {

    private SortedSongSelectionPresenter.SongAdapterPresenter songAdapterPresenter;

    @Mock
    private SortedSongSelectionContract.SongAdapterContract.Adapter adapter;

    @Mock
    private SortedSongSelectionContract.Presenter presenter;

    @Mock
    private Song song;
    private List<Song> songList;

    @Before
    public void setUp(){
        songList=new ArrayList<>(1);
        songList.add(song);
        songAdapterPresenter=new SortedSongSelectionPresenter.SongAdapterPresenter(adapter,presenter);
    }

    @Test
    public void testGetItemCount(){

        songAdapterPresenter.getItemCount();
        verify(songList.size()).equals(1);
    }

    @Test
    public void testonBindView(){

    }


} 

当我运行testGetItemCount方法时,我得到org.mockito.exceptions.misusing.NotAMockException:

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

Mockito的verify方法用于与模拟进行交互,并确保按预期使用。例如,您可以编写verify(song).something()以确保something模拟调用song方法。

在您的情况下,您似乎只是在寻找一种方法来验证(断言)返回的值。由于这与您的song模拟无关,您应该使用像Hamcrest这样的框架及其assertThat方法:

@Test
public void testGetItemCount() {
    int count = songAdapterPresenter.getItemCount();
    assertThat(count, is(1));
}

你可以用任何你觉得舒服的方式写断言。由于您没有与模拟器进行交互(在您的情况下为song),因此不适合使用Mockito。