首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证方法从Java中的同一个类调用另一个方法

问验证方法从Java中的同一个类调用另一个方法
EN

Stack Overflow用户
提问于 2018-01-19 22:08:59
回答 2查看 2K关注 0票数 0

我正在使用Java在Android上工作,并且有一个类,它是基类活动类的子类。子类中的一个方法从基类调用另一个方法。在单元测试中,我希望验证是否使用子类方法调用基类中的方法。我该怎么做?

代码语言:javascript
复制
public class MyActivity extends Activity {
  public void myMethod() {
    moveTaskToBack(false);
  }
}

下面是我尝试过的::

代码语言:javascript
复制
MyActivity myActivity = new MyActivity();
final Activity mockActivity = Mockito.spy(Activity.class);
myActivity.myMethod();
Mockito.verify(mockActivity, Mockito.times(1)).moveTaskToBack(false);

错误正在查看:

代码语言:javascript
复制
Wanted but not invoked:
myActivity.moveTaskToBack(false);
Actually, there were zero interactions with this mock.

我不是在测试它吗?

EN

回答 2

Stack Overflow用户

发布于 2018-01-19 22:17:28

我不常用莫基托,但你试过换衣服吗?

Mockito.verify(mockActivity, Mockito.times(1)).moveTaskToBack(false);

至

Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);

似乎您测试的是错误的活动对象

票数 0
EN

Stack Overflow用户

发布于 2018-01-20 22:26:13

你需要做的是:

代码语言:javascript
复制
MyActivity myActivity = Mockito.spy(MyActivity.class);
myActivity.myMethod();
Mockito.verify(myActivity, Mockito.times(1)).moveTaskToBack(false);

您不需要关心父类,因为子类是超类的类型。MyActivity是一种活动。换句话说,您在MyActivity类中拥有完全相同的MyActivity()方法,并且实际上正在调用它。

当然,您可以使用父引用super.moveTaskToBack(false)显式调用该方法,但这对您的用例没有任何意义。在这种情况下,测试将失败,因为超级引用将调用moveTaskToBack

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48350249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档