单元测试 - 在Junit测试中模拟Android方法



我正在尝试为我的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);

相关内容

  • 没有找到相关文章

最新更新