【问题标题】:Mock Object Libraries in JavaJava 中的模拟对象库
【发布时间】:2011-04-19 12:43:12
【问题描述】:

有人会建议一个 Mock 库并提供选择背后的理由吗?

我希望在现有代码库中引入一个。

谢谢。

【问题讨论】:

标签: java mocking


【解决方案1】:

This is the best comparison I've seen,多个 Java 模拟框架,包括 EasyMock 和 mockito。 [原页面离线;此链接指向存档副本。]

它包括 EasyMock、Mockito、jMock、SevenMock、JMockit、rMock、Unitils。

我首先使用了 EasyMock,但后来转向了 Mockito。使用 EasyMock 创建的单元测试有时很脆弱且难以调试。 Mockito 很简单,部分原因是它区分了存根和验证。这是它和 EasyMock 的面向 Mockito 的比较:http://code.google.com/p/mockito/wiki/MockitoVSEasyMock

【讨论】:

  • 这种比较已经过时了。例如,它评估的 JMockit 版本现在已经快三年了。作者实际上承诺会更新它,但从未通过。
  • @Rogerio - 您应该披露您是 JMockit 的作者。
  • 已公开。我的 SO 个人资料包含一个指向 JMockit 项目站点的链接,该链接反过来显示了我的全名。我只是觉得在我发表的关于 JMockit 的每篇文章中都包含一个明确的注释是令人讨厌和多余的。
  • 此处提供了最新的比较矩阵,可能偏向于 JMockit code.google.com/p/jmockit/wiki/MockingToolkitComparisonMatrix
【解决方案2】:

我的建议是JMockit(我写的)。该项目站点有大量信息(以及数百个实际的 JUnit 测试)比较了几个 Java 模拟 API(EasyMock、jMock、JMockit、Mockito、PowerMock、Unitils Mock),以及一个广泛的 @987654322 @。

【讨论】:

  • 在不公开作者身份的情况下推荐自己的产品是一种误导。
  • 嗯,我不知道...您为什么认为它具有误导性,确切地说?任何人都可以通过在此处和项目网站上查看我的名字轻松发现这一点;我的身份从未被隐藏。 (我并不是说你一定是错的;只是想更好地理解观点。)
  • 大多数人不阅读您的个人资料。有一个作者和 n 个用户。在没有其他信息的情况下,推荐很可能来自用户。公开披露您有利益冲突是合乎道德的。这就是为什么,例如,你看到道德新闻媒体包括新闻报道中的披露,而不是某些读者可能偶然发现的其他地方......比如,说......在一个未使用的厕所里,上面写着“当心老虎。”
  • @Rogerio,JMockit 支持 TestNG 吗?
  • @Candy:是的,但目前只有 5.9-5.11 版本。
【解决方案3】:

easymock。原因,来自他们的网站

'EasyMock 通过使用 Java 的代理机制动态生成接口(和通过类扩展的对象)为接口(和对象)提供 Mock 对象。由于 EasyMock 独特的记录预期风格,大多数重构不会影响 Mock 对象。所以 EasyMock 非常适合测试驱动开发。'

【讨论】:

  • 您对 EasyMock 有亲身经历吗?
【解决方案4】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-07
相关资源
最近更新 更多