我正在学习使用EasyMock和Mockito进行测试。他们之间有什么区别? 它们中的任何一个的优点和缺点是什么?哪一个更好用?
答案 0 :(得分:11)
虽然这个问题主要基于意见,但你得到here的差异:
<强>差异强>:
- 没有录制/重播模式 - 不需要它们。你可以用Mockito模拟器做两件事 - 验证或存根。然后在执行和验证之前进行存根。
- 所有模拟都很“漂亮”(甚至更好,因为集合返回方法返回空集合而不是空值)。即使模拟很好,你也可以严格地验证它们 如您所愿,并检测任何不需要的互动。
- 显式语言以提高可读性:verify()和when()VS expect(mock.foo())和mock.foo()的混合(没有'expect'的普通方法调用)。我相信你们中的一些人会发现这个论点是主观的:)
- 简化的存根模型 - 无论调用多少次,存根方法都会使用存根值重放。与EasyMock的andStubReturn()和StubThrow()完全相同。此外,您可以使用不同参数的不同返回值存根(例如 在EasyMock中。
- 存根方法的验证是可选的,因为通常更重要的是测试存根值是否正确使用而不是来自何处。
- 验证是明确的 - 验证错误指向代码行,显示哪些交互失败。验证顺序灵活,无需验证每次交互。
- 自定义参数匹配器使用hamcrest匹配器,因此您可以使用现有的hamcrest匹配器。 (EasyMock也可以与hamcrest集成,虽然它不是EasyMock的一部分而是hamcrest。参见
hamcrest的文档。