我正在使用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.我不是在测试它吗?
发布于 2018-01-19 22:17:28
我不常用莫基托,但你试过换衣服吗?
Mockito.verify(mockActivity, Mockito.times(1)).moveTaskToBack(false);
至
Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);
似乎您测试的是错误的活动对象
发布于 2018-01-20 22:26:13
你需要做的是:
MyActivity myActivity = Mockito.spy(MyActivity.class);
myActivity.myMethod();
Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);您不需要关心父类,因为子类是超类的类型。MyActivity是一种活动。换句话说,您在MyActivity类中拥有完全相同的MyActivity()方法,并且实际上正在调用它。
当然,您可以使用父引用super.moveTaskToBack(false)显式调用该方法,但这对您的用例没有任何意义。在这种情况下,测试将失败,因为超级引用将调用moveTaskToBack
https://stackoverflow.com/questions/48350249
复制相似问题