JMockit有任何缺点吗?

时间:2010-06-05 18:11:25

标签: java unit-testing jmock jmockit mockito

这个comparison表明,JMockit比其他框架有几个优势。

其他一个(JMock,EasyMock,Mockito,Unitils,PowerMock + Mockito / EasyMock)是否还有其他优势超过JMockit?

2 个答案:

答案 0 :(得分:16)

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

测试非常脆弱,因为正在测试私有方法中包含的实现细节(因此,如果我更改如何该类可以破坏测试,即使是什么班级确实没有受到影响)。

代码也充满了对静态方法的调用 - 如果开发人员没有能力模拟这些,那么我认为他们会更加努力地将事情分解得更好。

答案 1 :(得分:14)

三个缺点:

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

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

使用像Eclipse这样的IDE,我发现自己使用工具支持在最近的时间内比模拟(JMockit,Mockito等)更频繁地生成测试类中的存根。这种方法的优点是它非常简单。如果你有一个拥有许多开发人员的团队,并且他们中的一些人不喜欢测试并且没有动力去学习模拟框架,那么这一点尤为出色。此外,存根实现没有框架限制!

如果您打算作为替代方案进行存根,您应该查看Robert C. Martin关于嘲笑和存根herehere

的博客

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