【译】Mockito vs. Powermock, opinionated vs. dogmatic, static mocking

原文 https://www.linkedin.com/pulse/mockito-vs-powermock-opinionated-dogmatic-static-mocking-faber/

集成库的作者应该在API上一起工作。通过这种方式,产品会有更高的质量,而且集成库对他们的用户来说更安全。

在Mockito允许静态模拟?这种进退两难的局面可能很快就会成为现实。

Powermockito是Powermock的一部分,一个帮助模拟静态方法和其他不能模拟的东西的库。Powermockito经过多年独立开发后,现在我们共同致力于从Mockito公开新的公共API,所以使用Powermockito是安全的。为什么现在它不安全了?Powermockito使用了Mockito内部的APIs,并且拷贝了一些Mockito的代码。这样得到的解决方案是脆弱的,非常容易受到版本更改的影响,并集中各种边缘情况中。Arthur Zagretdinov,Powermockito的当前维护者,与Mockito团队合作,我们正在清理这方面的进展良好。对于Mockito团队来说,这是一个具有挑战性的工程实践。我们需要设计集成API,以便第三方工具(如Powermock)能够在Mockito之上实现干净的解决方案。

有见解但不教条

免责声明:Mockito团队认为通往地狱的道路是用静态方法铺成的。但是,Mockito的工作不是保护您的代码免受静态方法的影响。如果您不喜欢您的团队进行静态模拟,那么停止在组织中使用Powermockito。Mokito需要作为一个工具包来发展,它有一个关于Java测试应该如何编写的观点(例如,不要模拟静态的资源!!!)然而,Mockito并不教条。我们不想阻塞诸如静态模拟之类的未经推荐的用例。那不是我们的工作。

解决集成问题需要团队合作

Powermockito目前有从Mockito复制的代码。完成后,将从Mockito复制零代码。那是很久以前应该做的。当库需要与其他库进行深度集成时,团队应该进行协作,而不是复制代码并使用内部代码。我绝对尊重Powermockito开发人员——有时您必须使用内部API才能取得进展。我们可以分配给开源的时间有时只是开发一个干净解决方案实际需要的时间的一小部分。即使Powermockito更努力地推动Mockito团队提供必要的API,也不能保证Mockito核心开发人员有时间实现它们。幸运的是,在2016年年中,Mockito团队获得了一些新鲜血液。去年10月,我们发布了Mockito v2,从那时起,我们继续发布了不错的增量改进。例如,检查更干净的测试和提高生产力的严格存根特性。现在是时候解决与Powermockito的集成了。

Arthur,振作起来,让我们完成这个项目吧!我保证Mockito团队会抽出时间来实现API。令人兴奋!

你可能感兴趣的:(【译】Mockito vs. Powermock, opinionated vs. dogmatic, static mocking)