gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:33:32 24 4
gpt4 key购买 nike

我是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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com