java - 当我想测试一个复杂的方法时,mockito 是否存储操作

标签 java unit-testing mockito

我是mockito新手。这是一个简单且很酷的框架(它让我喜欢测试:))。

我正在测试一个复杂的方法: 在此方法中,我仅在数据更改时调用服务。

public void testMyFacadeMethod() {   
    .... 
    If (dataChanged) {
        myService.callServiceMethod();
    }
}

在我的测试方法中:我准备模拟,然后更改数据并调用

verify(myService).callServiceMethod();

一切都很好,我的测试通过了。 在同一个测试方法中,我回想起我的facadeMethod,因此不得调用myService.callServiceMethod(因为我的数据不会更改)。 测试失败:

verify(myService).callServiceMethod();
myFacadeMethod() <== tested method
verify(myService, times(0)).callServiceMethod(); <= tell me that this method is called once

我的问题是:mockito 是否存储此行之前调用该方法的次数?所以第一次调用不会重置计数器?

对我来说,第二次调用 verify 方法只会计算第一次调用 verify 后的调用次数(我知道我的生活变得复杂了:p)

谢谢你,对我的英语感到抱歉。

您是否推荐任何测试电子书来学习测试艺术?

最佳答案

是的,Mockito 不会自动重置方法调用的次数。 您可以使用 Mockito.reset(T) 重置您的模拟。

但是,您应该尽量避免使用该方法。如果测试代码是智能的,则通常没有必要,因此它的存在可能表明代码有异味。看 http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#17

关于java - 当我想测试一个复杂的方法时,mockito 是否存储操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218176/

相关文章:

java - 将 C++ 类转换为等效的 Java 类

java - EL 无法处理下划线之前的单个字符?

python - 如何使用临时文件系统在 python 中模拟 os.walk?

java - 如何使用 Mockito 在另一个 Mock 类中模拟 Spring 消息资源?

java - 尝试在 'id in R' 中添加符号时出现 IDE 错误

javascript - 如何通过url传递特殊字符 '/'

c# - 最小起订量 - 最小起订量只有效一次

angularjs - 在 AngularJS 中测试 : How do I test the backend response of my API's?

mockito - 如何将多个 Mockito 匹配器与逻辑 "and"/"or"结合起来?

scala - 测试是否在不提供参数的情况下调用了方法