5

我正在学习使用 EasyMock 和 Mockito 进行测试。它们之间有什么区别?它们中的任何一个的优点和缺点是什么?哪个更好用?

4

1 回答 1

12

虽然这个问题主要是基于意见的,但你可以从这里得到不同之处:

差异

  • 没有记录/重播模式 - 不需要它们。使用 Mockito 模拟只能做两件事 - 验证或存根。存根在执行之前进行,之后进行验证。
  • 所有的模拟都是“不错的”(甚至更好,因为返回集合的方法返回空集合而不是空值)。即使模拟很好,您也可以根据
    需要严格验证它们并检测任何不需要的交互。
  • 显式语言以获得更好的可读性:verify() 和 when() 与 expect(mock.foo()) 和 mock.foo() 的混合(没有“expect”的普通方法调用)。我相信你们中的一些人会发现这个论点是主观的:)
  • 简化的存根模型 - 存根方法始终以存根值重播,无论它们被调用多少次。与 EasyMock 的 andStubReturn() 和 andStubThrow() 完全一样。此外,您可以为不同的参数使用不同的返回值(如在 EasyMock 中)。
  • 验证存根方法是可选的,因为通常更重要的是测试存根值是否正确使用,而不是它来自哪里。
  • 验证是明确的 - 验证错误指向显示交互失败的代码行。验证顺序是灵活的,不需要验证每一个交互。
  • 自定义参数匹配器使用 hamcrest 匹配器,因此您可以使用现有的 hamcrest 匹配器。(EasyMock 也可以与 hamcrest 集成,尽管它不是 EasyMock 的一部分,而是 hamcrest。请参阅 hamcrest 的
    文档)。
于 2013-11-10T14:10:49.833 回答