JMockit有任何缺点吗?

Chr*_*her 16 java unit-testing jmockit jmock mockito

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

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

cod*_*box 16

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

因为包含在私有方法的实施细则正在测试中(所以如果我改变的测试是非常脆怎么类做一些事情就可以打破的测试,即使什么的类并没有受到影响).

代码也充满了对静态方法的调用 - 如果开发人员没有能力模拟这些,那么我认为他们会做出更多的努力来解决更好的事情.


Esp*_*pen 14

三个缺点:

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

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

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

如果您打算作为替代品进行存根,您应该查看Robert C. Martin的博客,关于这里这里的嘲笑和存根

不然,它看起来非常好!虽然我只使用JMock,EasyMock和JMockit的基础知识.

  • @Rogerio:JMockit太棒了,而且很有可能,有一天我会用它.是否有JMockit文档的缩写版本?(提示:所有关于Mockito的重要事项都可以在不到两个小时内学会......)也许与定义JMockit功能的一个子集一起,标记为"安全的好设计"(这包括模拟最终方法BTW!)帮助,因为如果我们可以测试一切,那么说服团队成员(或者 - 我害怕 - 甚至是我自己)编写好的,可重用的代码而没有隐藏或不必要的依赖变得更加困难! (2认同)