我正在使用Java开发Android,并且有一个类是基类活动类的子类。我的子类中的方法从基类调用另一个方法。在单元测试中,我想验证是否在执行子类方法的情况下调用基类中的方法。我该怎么做?
public class MyActivity extends Activity {
public void myMethod() {
moveTaskToBack(false);
}
}
以下是我的尝试:
MyActivity myActivity = new MyActivity();
final Activity mockActivity = Mockito.spy(Activity.class);
myActivity.myMethod();
Mockito.verify(mockActivity, Mockito.times(1)).moveTaskToBack(false);
看到错误:
Wanted but not invoked:
myActivity.moveTaskToBack(false);
Actually, there were zero interactions with this mock.
我没有正确测试吗?
答案 0 :(得分:0)
我没有太多使用Mockito,但你是否尝试过改变
Mockito.verify(mockActivity, Mockito.times(1)).moveTaskToBack(false);
到
Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);
?
您似乎正在测试错误的活动对象
答案 1 :(得分:0)
您需要做的是:
MyActivity myActivity = Mockito.spy(MyActivity.class);
myActivity.myMethod();
Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);
您不需要关心父类,因为子类是一种超类。 MyActivity是活动。换句话说,你在MyActivity类中拥有完全相同的moveTaskToBack()方法,实际上你正在调用它。
当然,您可以使用父级参考super.moveTaskToBack(false)显式调用该方法,但这对您的用例没有任何意义。在这种情况下,测试将失败,因为moveTaskToBack将被超级引用调用