【问题标题】:A feature in EasyMock that is not there in MockitoEasyMock 中的一个功能,而 Mockito 中没有
【发布时间】:2012-02-29 08:51:49
【问题描述】:

EasyMock 中是否有任何在 Mockito 中不存在或未正确处理(与 EasyMock 相比)的好功能?

我想了解一些功能,例如。 Mockito 支持使用@ InjectMocks 将所有模拟轻松注入到被测类中,而在 EasyMock(开箱即用)中并非如此。同样,EasyMock 中是否有任何功能不存在或处理不如 EasyMock?

【问题讨论】:

  • 对象间谍 = spy(xxx);当(spied.yyy()).thenReturn(xxx);这可能会抛出异常,你必须使用 doReturn(xxx);我认为这在模仿中不太好

标签: unit-testing mocking mockito easymock


【解决方案1】:

我想到的一个功能是支持隐式验证的期望,而 Mockito 缺乏:

@Test
public void usingEasyMock()
{
    Collaborator mock = createMock(Collaborator.class);

    expect(mock.registerXyz("xyz")).andReturn(true);
    replay(mock);

    new ClassUnderTest().doSomething(mock);

    verify(mock);
}


@Test
public void usingMockito()
{
    Collaborator mock = mock(Collaborator.class);

    when(mock.registerXyz("xyz")).thenReturn(true);

    new ClassUnderTest().doSomething(mock);

    verify(mock).registerXyz("xyz");
}

注意在第二个测试中对registerXyz("xyz") 的重复调用。 Mockito 可能会添加一个 times(n) 方法与对 thenReturn(...) 的调用(EasyMock 有)一起使用。这样可以避免在这种情况下重复代码。

【讨论】:

  • 感谢您的意见。这个功能是在 Mockito 中明确添加的,虽然它当然不是那么方便。是的,这很重要:-) 感谢分享。
猜你喜欢
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多