Java Mockito测试回收器查看单击错误
我在我的Java Mockito测试回收器查看单击错误,java,android,unit-testing,android-studio,mockito,Java,Android,Unit Testing,Android Studio,Mockito,我在我的RecyclerView点击中使用Mockito进行了一次测试,但抛出了一个错误 这是我的代码: @Test public void getUserClick() { RecyclerView rcv = Mockito.mock(RecyclerView.class); List<User> usersList = new ArrayList<>(); User commonUser = Mockito.mock(User.class
RecyclerView
点击中使用Mockito进行了一次测试,但抛出了一个错误
这是我的代码:
@Test
public void getUserClick() {
RecyclerView rcv = Mockito.mock(RecyclerView.class);
List<User> usersList = new ArrayList<>();
User commonUser = Mockito.mock(User.class);
commonUser.setId("1");
commonUser.setName("User");
commonUser.setEmail("admin@admin.com");
usersList.add(commonUser);
UserAdapterTest adapter = Mockito.mock(UserAdapterTest.class);
adapter.addData(usersList);
rcv.setAdapter(adapter);
// Test Click
rcv.getChildAt(0).performClick();
//Verify Click Item
Mockito.verify(adapter).testClickItem(commonUser);
}
并且我的适配器已经实现了单击事件。如果执行此操作:
RecyclerView rcv = Mockito.mock(RecyclerView.class);
rcv
成为模拟对象(在任何方法调用中,默认情况下返回null
(或0
,或false
)的对象)。因此,默认情况下,rcv.getChildAt(0)
将返回null
,当您尝试对其调用performClick()
时,会发生NullPointerException
当您创建一个mock并希望某个方法返回一个特定值时,必须使用Mockito.When()
告诉它。所以在你的情况下,你应该这样做:
// configure "when" behaviour **before** calling the getChildAt() method
Mockito.when(rcv.getChildAt(0)).thenReturn(objectYouWantToBeReturned);
显然,在使用when
之前,您需要创建您想要的对象。
上面的代码将使rcv.getChildAt(0)
返回所需的对象,但仅当您使用参数0
调用它时
如果要为任何值返回同一对象(不仅仅是0
),可以执行以下操作:
Mockito.when(rcv.getChildAt(Mockito.anyInt())).thenReturn(objectYouWantToBeReturned);
这将返回objectYouWantToBeReturned
,用于getChildAt
的所有调用,无论参数值是什么。谢谢@Hugo,成功了!。只有点击有问题,从不调用事件,否则我没有表格来验证。
Mockito.when(rcv.getChildAt(Mockito.anyInt())).thenReturn(objectYouWantToBeReturned);