【发布时间】:2017-07-07 23:00:57
【问题描述】:
我在测试方面有点新手,所以请耐心等待。
我想测试我的 onDismiss() 方法的行为。我想确保 onDismiss() 确实调用了 showDialog() 方法。为了做到这一点,我想验证是否调用了 showDialog() 中的模拟。 我收到一条错误消息,说与该模拟没有交互。如果我在调试模式下运行它,我看到我们踩到了 loadingDialog.show() 行,我仍然收到此错误。
问题:
- 我想知道,在这种情况下如何测试 subMethod 调用?
- 为什么会这样?
(showDialog() 已经被单独的测试覆盖)
测试:
sut.onDismiss(mockDialog)
verify(mockLoadingDialog, times(1)).show();
代码:
public void onDismiss(DialogInterface dialog) {
showDialog();
}
public synchronized void showDialog() {
loadingDialog.show();
}
错误信息:Actually, there were zero interactions with this mock.
【问题讨论】:
-
如何注入模拟?你的模拟
mockLoadingDialog仍然必须与loadingDialog对象相同,只是一个模拟版本,否则它如何知道交互? -
我正在使用@Mock注解创建模拟对象并通过构造函数依赖注入将它们传递给类
-
我假设您在
sut对象上使用@InjectMocks进行构造函数注入?
标签: android unit-testing mockito robolectric