JMockit有什么缺点吗?

2022-09-03 04:54:35

这种比较表明,JMockit比其他框架有几个优点。

其他一个(JMock,EasyMock,Mockito,Unitils,PowerMock + Mockito/EasyMock)是否也比JMockit具有任何优势?


答案 1

我最近采用了一个使用JMockit的项目,我认为由于库模拟静态和私有方法的能力,代码的质量肯定受到了影响。

测试非常脆弱,因为私有方法中包含的实现细节正在测试中(因此,如果我改变类执行某些操作的方式,即使类的作用不受影响,它也会破坏测试)。

代码中还充斥着对静态方法的调用 - 如果开发人员没有能力模拟这些方法,那么我认为他们会做出更多的努力来更好地消除耦合。


答案 2

三大缺点:

  • 必须使用 Java 代理程序执行字节码检测。
  • 您不能使用 Eclipse 附带的已签名 junit.jar 文件。
  • 你必须学习一个模拟API。(与存根对象相反)

你总是可以讨论,如果能够像JMockit那样模拟最终的课程是一件好事。除非是遗留代码,否则重构通常是更好的选择。

对于像Eclipse这样的IDE,我发现自己使用工具支持在测试类内生成存根的频率比最近的模拟(JMockit,Mockito等)更频繁。这种方法的优点是它非常简单。当你的团队中有很多开发人员,其中一些人不喜欢测试,也没有动力去学习一个模拟框架时,这尤其好。此外,存根实现没有框架限制!

如果你愿意接受存根作为替代方案,你应该看看Robert C. Martin关于嘲笑和存根的博客 这里这里

否则,它看起来非常好!虽然我只有JMock,EasyMock的经验和JMockit的基本知识。


推荐