我的开发团队已经开始使用 的Mockito并具有已定义为“最终”类。我一直在有效的Java由约书亚布洛赫读取和SO线程当使用最终那所有类应该使用final修饰符。目前已在该线程一些不同的意见,但我有强迫阶级成分,除非继承有道理的想法一致。

我应该怎么做时,我想使用像一个的Mockito测试框架,要求类没有“最终”修改测试类的吗我希望在别人遇到类似的问题,他们的发展。没有你的开发团队到达什么决议吗?

有两个显而易见的答案,如使用JMock的或删除我们要测试的类“最终”修改,但我们要坚持一个外部测试框架(除了JUnit的),它可能很难说服其他开发人员除去“最终”改性剂。

感谢。

有帮助吗?

解决方案

什么是你最需要的:

  1. 要确保有人不从你的类继承,或能力
  2. 要确保你的代码是可测试使用的选择吗?你的模拟框架的能力
  3. 一般情况下,我相信,你并不需要强制执行(1)。对我来说,可测试性(2),是更为重要的。什么最适合你的情况?

其他提示

如果你希望你的类是最终你可以让他们实现接口。的接口是mockable。

正如在其他的答案已经提到的,你可以让你的最后的类来实现 接口(S)和在测试中嘲笑接口(一个或多个)。

这是使用模拟对象的益处中的一个;在这样的情况下,他们会让你思考如何代码可以组织得更好。如果你的代码库有很大的参考final类(因此结合具体的实现)它违反了“面向接口编程”,并需要更好的可测性,将有助于你想重构,以消除对具体的实现依赖的OO原则。

此纸张上模拟的使用对象的Endo-测试:单元测试用模拟对象具有标题的部分(4.4)的 接口发现 的解释对象中发现的接口如何模拟帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top