首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EasyMock.expect(...).times(...)之间的区别与使用EasyMock.expect(...)几次?

EasyMock.expect(...).times(...)之间的区别与使用EasyMock.expect(...)几次?
EN

Stack Overflow用户
提问于 2011-09-20 23:53:38
回答 2查看 22K关注 0票数 10

这两者的区别是什么:

代码语言:javascript
复制
ResultSet set = EasyMock.createNiceMock(ResultSet.class);
EasyMock.expect(set.getInt("col1")).andReturn(1);
EasyMock.expect(set.wasNull()).andReturn(false);
EasyMock.expect(set.getInt("col2")).andReturn(2);
EasyMock.expect(set.wasNull()).andReturn(false);
EasyMock.replay(set);

assertEquals(1, set.getInt("col1"));
assertEquals(false, set.wasNull());
assertEquals(2, set.getInt("col2"));
assertEquals(false, set.wasNull());

还有这个:

代码语言:javascript
复制
ResultSet set = EasyMock.createNiceMock(ResultSet.class);
EasyMock.expect(set.getInt("col1")).andReturn(1);
EasyMock.expect(set.getInt("col2")).andReturn(2);
EasyMock.expect(set.wasNull()).andReturn(false).times(2);
EasyMock.replay(set);

assertEquals(1, set.getInt("col1"));
assertEquals(false, set.wasNull());
assertEquals(2, set.getInt("col2"));
assertEquals(false, set.wasNull());

注意:这两组代码都作为jUnit测试成功编译和运行。另外,请注意,这里有意使用“不错的”mock。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-21 00:09:11

回答你标题中的问题--没有区别。调用x.expect(y).times(3)与调用

代码语言:javascript
复制
x.expect(y);
x.expect(y);
x.expect(y);

(请注意,正如Andy Thomas-Cramer所指出的,您的特定示例并不完全相等,因为调用的顺序不同。)

这看起来可能只是一个方便的问题。然而,除此之外还有一个明显的区别:在times()的情况下,您可以将预期的调用次数作为一个变量传入。因此,您可以通过一些外部文件或甚至简单地通过一个公共常量int使其可配置,您也可以使用该常量来触发测试工具。这比必须显式编译对expect()的正确调用次数要灵活得多(如果您现在需要使用5个workers而不是3个workers进行测试,还可以更新代码)。

票数 13
EN

Stack Overflow用户

发布于 2011-09-21 00:01:49

第二种方法读写起来更简单。但是,如果将mock更改为严格的mock,则验证调用的顺序将会失败。

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

https://stackoverflow.com/questions/7488067

复制
相关文章

相似问题

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