无法理解EasyMock.replay()的使用

时间:2011-05-13 04:12:26

标签: testing junit easymock

我是单位测试和Junit的新手。我知道Junit的基础知识。我刚刚开始学习EasyMock框架。

我无法理解replay()方法的使用。

有人可以提供一些信息吗?

我理解EasyMock.expect()和EasyMock.verify()的用户。

4 个答案:

答案 0 :(得分:52)

重放方法用于将模拟从记录(您记录您希望调用的方法)传递到重放状态(您实际测试的位置)。

答案 1 :(得分:29)

您可以这样记住:当您编写EasyMock.expect(abc.someMethod).andReturn(answer)时,您记录了预期的行为。但是,当你写EasyMock.replay(abc)时,你实际上正在激活它。

我发现这个例子非常有用: http://www.tutorialspoint.com/easymock/easymock_adding_behavior.htm

答案 2 :(得分:9)

使用EasyMock,当你“期待”时,你实际上记录了所需的伪造/模拟行为。因此,当您想将此模拟行为注入测试运行器(例如JUnit)时,您将“重播”您的记录。

与其他模拟框架相比,奇怪的名称确实应该是一个更好的名称

  • 期待 - >注册
  • 重播 - >激活(或根本不需要调用它)。

答案 3 :(得分:1)

如以上帖子所述,该名称具有误导性。 EasyMock.replay()激活期望。我们还希望在定义了一个期望之后,默认情况下应该激活它。像Mockito这样的许多其他框架也是如此。

但是我看到设计师可能认为的一点(我可能是错的),如下所示:

    TestClass testObj = EasyMock.createMock(TestClass.class);   
    expect(testObj.testMethod(testInputOne).andReturn(testOutputOne);
    expect(testObj.testMethod(testInputTwo).andReturn(testOutputTwo);
    expect(testObj.testMethod(testInputThree).andReturn(testOutputThree);
    //...
    EasyMock.replay(testObj);

在这里,我们为同一方法的不同输入设置了不同的期望。然后,一口气激活所有期望。每次定义定义时,框架都不会激活期望。