如何使用 EasyMock 测试 void 方法
Posted
技术标签:
【中文标题】如何使用 EasyMock 测试 void 方法【英文标题】:How to test void methods using EasyMock 【发布时间】:2012-07-27 16:30:19 【问题描述】:我已经看到了一些关于此的问题,但我似乎无法理解我的特定问题的任何答案。
我有一个模拟对象,让我们调用“object1”,我将它发送到某个方法进行测试,让我们调用 testMethod()。所以我最终打电话给
testMethod(object1);
用于测试。现在在这个testMethod中的某个地方,会有一个调用方法的部分
object1.toggleDisplay();
这是一个无效的方法。如果方法像
object1.getDisplay()
它实际上返回的东西,我通常这样做
EasyMock.expect(object1.getDisplay()).andReturn(whatever);
但是,这是一个 void 方法,我想测试一下它确实被调用了一定次数。最简单的方法是什么?
谢谢
【问题讨论】:
【参考方案1】:如果过去几年情况没有改变,您可以在设置期望时使用expectLastCall
。
object1.toggleDisplay();
object.expectLastCall();
【讨论】:
等等,所以我必须将 object.expectLastCall() 放入我的实际方法中?我将单元测试类和实际程序类分开,并且不希望在实际程序中包含单元测试代码。 不,您将方法调用和expectLastCall().times(NUM_TIMES)
放在您之前使用EasyMock.expect(object1.getDisplay()).andReturn(whatever)
的单元测试中
我有什么办法可以针对特定方法执行此操作吗?例如,我有方法 toggleOn() 和 toggleOff()
是的:只需在每个方法期望后添加expectLastCall()
。它适用于最后(最近)调用的定义 :-) 如果有疑问,请尝试一下!【参考方案2】:
object1.toggleDisplay();
EasyMock.expectLastCall().times(5);
或者如果您静态导入 EasyMock
方法:
import static org.easymock.EasyMock.*;
[...]
object1.toggleDisplay();
expectLastCall().times(5);
【讨论】:
以上是关于如何使用 EasyMock 测试 void 方法的主要内容,如果未能解决你的问题,请参考以下文章