当Java Best Practices与Mockito发生冲突时该怎么办

aus*_*ten 11 java mockito

我的开发团队已经开始使用Mockito,并且已经将类定义为"final".我已经在Joshua Bloch和SO线程中阅读了Effective Java.何时使用final,所有类都应该使用final修饰符.线程中存在一些分歧,但我同意强制类组合的想法,除非继承有意义.

当我想使用像Mockito这样的测试框架来测试类时,我需要做什么才能让类没有'final'修饰符? 我希望其他人在开发过程中遇到过类似的问题.您的开发团队已达成哪些决议?

有两个明显的答案,比如使用JMock或删除我们想要测试的类的'final'修饰符,但我们想要坚持使用一个外部测试框架(除了JUnit),并且可能很难说服其他开发人员删除'final'修饰符.

谢谢.

Kal*_*son 10

你最需要什么:

  1. 能够确保某人不从你的班级继承,或者
  2. 是否能够使用您选择的模拟框架确保您的代码是可测试的?

一般来说,我认为你不需要强制执行(1).对我来说,可测试性(2)更为重要.什么最适合你的情况?