【问题标题】:How to test void methods using EasyMock如何使用 EasyMock 测试 void 方法
【发布时间】:2012-07-27 16:30:19
【问题描述】:

我已经看到了一些关于此的问题,但我似乎无法理解我的特定问题的任何答案。

我有一个模拟对象,让我们调用“object1”,我将它发送到某个方法进行测试,让我们调用 testMethod()。所以我最终打电话给

testMethod(object1);

用于测试。现在在这个testMethod中的某个地方,会有一个调用方法的部分

object1.toggleDisplay();

这是一个无效的方法。如果方法像

object1.getDisplay()

它实际上返回的东西,我通常这样做

EasyMock.expect(object1.getDisplay()).andReturn(whatever);

但是,这是一个 void 方法,我想测试一下它确实被调用了一定次数。最简单的方法是什么?

谢谢

【问题讨论】:

    标签: java unit-testing junit easymock


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多