gpt4 book ai didi

java - EasyMock.expect(...).times(...) 与多次使用 EasyMock.expect(...) 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:30 25 4
gpt4 key购买 nike

这有什么区别:

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());

还有这个:

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 测试成功编译和运行。另外,请注意,这里有意使用“nice”模拟。

最佳答案

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

完全一样
x.expect(y);
x.expect(y);
x.expect(y);

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

这似乎只是一个方便的问题。然而,除此之外还有一个明显的区别:在 times() 情况下,您可以将预期的调用次数作为变量传递。因此,您可以通过一些外部文件或什至简单地通过一个公共(public)常量 int 来配置它,您也可以使用它来启动测试工具。它比必须显式编译对 expect() 的正确调用次数要灵活得多(如果您现在需要用五个工作人员而不是三个工作人员进行测试,则更新您的代码)。

关于java - EasyMock.expect(...).times(...) 与多次使用 EasyMock.expect(...) 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488067/

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