【发布时间】:2013-10-03 20:27:43
【问题描述】:
在重构一些旧的单元测试时,我添加了一个verify() 调用来查看一个方法被预期的次数,并且惊讶地发现“预期”调用大于使用times() 设置的调用。出于某种原因,下一行的期望调用被添加到我的方法中。
为什么会这样?
测试类
public class SandBoxTest {
@Test
public void shouldGetSand() {
Sand niceMock = EasyMock.createNiceMock(Sand.class);
EasyMock.expect(niceMock.sandMethod()).andReturn(1).times(2);
EasyMock.expect(Box.boxMethod()).andReturn(99).times(11);
EasyMock.replay(niceMock);
EasyMock.verify(niceMock);
}
}
运行时输出
java.lang.AssertionError:
Expectation failure on verify:
Sand.sandMethod(): expected: 13, actual: 0
预期的输出
java.lang.AssertionError:
Expectation failure on verify:
Sand.sandMethod(): expected: 2, actual: 0
详情: EasyMock v3.1
跟进:使用 EasyMock 开启功能请求。 https://jira.codehaus.org/browse/EASYMOCK-128
【问题讨论】:
-
Box是指sandBox,它是如何初始化的? -
@SotiriosDelimanolis 不,sandBox 实际上是无关紧要的;我更新了代码以将其删除。此测试中没有具体的类或实现。