我正在尝试为我的Android应用程序创建一些JUnit测试。
在应用程序中,我有以下方法,我正在尝试进行测试:
public void checkBoxAction(View v) {
CheckBox cb = (CheckBox) v;
Boolean isChecked = cb.isChecked();
//Do stuff
}
我正在使用Mockito,我已经走到了这一步:
// ...
CheckBox dummyV = new CheckBox(mMockContext);
Mockito.when(dummyV.isChecked()).thenReturn(true);
item.checkBoxAction(dummyV);
// ...
但是当我运行测试时,出现错误:
java.lang.RuntimeException: Method isChecked in
android.widget.CompoundButton not mocked...
我认为问题在于,在方法checkBoxAction
中,isChecked
方法不是在v
上执行,而是在其他对象上执行。这个假设正确吗?这是问题所在吗?我该如何解决它?还是有别的什么?
如果你想
使用Mockito.when
,你应该模拟CheckBox
,试试:
CheckBox dummyV = mock(CheckBox.class);