我的适配器具有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:
非常感谢任何帮助
答案 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。