首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择Spring JUnit的模拟框架

选择Spring JUnit的模拟框架
EN

Stack Overflow用户
提问于 2012-09-05 19:16:29
回答 1查看 1.2K关注 0票数 2

我在基于春天的项目工作。我的客户要求为我的服务和DAO层编写JUnit测试用例。

我必须就我将要使用的模拟框架做出决定,并将尽快传达给客户端。

我以前从未使用过任何模拟框架。我听说过一些像Mockito,JMock,EasyMock等在网上搜索的东西。但没有得到任何令人信服的答案,我应该用哪一个。

因此,我需要一些帮助选择正确的模拟框架。

EN

回答 1

Stack Overflow用户

发布于 2013-03-10 21:20:20

正如其他评论所述,对此没有明确的正确答案,但我肯定会建议与Mockito一起去,原因有几点:

  • 它提供了比大多数其他错误描述更好的错误描述。失败的验证将返回异常,准确地解释发生了什么其他调用,在哪里,使用什么参数,使调试变得非常简单。
  • 与EasyMock: Mockito这样的旧框架相比,它具有明显的优势,并且比EasyMock、JMock和其他人所遵循的旧记录/重放/验证过程更有效地实现了一个更好的嘲弄模型。这是非常直观和相当容易掌握的诀窍,结果是更干净和更容易维护测试。
  • 它的模型在许多其他语言(如Moq)中也直接流行,更接近于在动态语言中模仿样式。这使得找到熟悉它的其他人变得非常简单,并且使您以后更容易使用其他工具。
  • 它正迅速成为Java项目中用于模拟的标准框架:我为许多公司从事项目中的自动化测试,我已经看到其中许多公司已经使用了Mockito,并积极地迁移到它。搜索“EasyMock”可以得到许多从EasyMock迁移到Mockito的结果,但没有一个是相反的。

EasyMock和https://code.google.com/p/mockito/wiki/MockitoVSEasyMock的Mockito之间有更多的不同之处。

更广泛地说,除非绝对需要,否则我将避免使用像PowerMock这样的框架。PowerMock允许您模拟代码库中的各种元素,而普通的模拟框架是不会的,但是您需要模拟这些元素的事实通常是其他一些底层设计问题的有力指示。如果您发现自己无法在不使用PowerMock的情况下进行测试,那么您应该真正考虑测试代码的结构是否可以重构为insteard (例如,摆脱对静态方法的依赖关系,更好地使用依赖项注入以避免调用构造函数等等)。

我还建议您也阅读Martin的极好的介绍来嘲弄。就所讨论的框架而言,这已经有点过时了,但它仍然为主要概念提供了一个非常好的概述,并给出了一些很好的例子。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12288278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档