我正在研究包括junit测试代码的项目。在一些我已经看到的方法被声明为default(no access specifier)的地方,他们在junit中使用它进行代码覆盖。任何人都可以从以下选项中得知哪一种是对代码进行单元测试的最佳方法。


  
  将方法设为默认值(无访问说明)。由于对于junit,我们将在类外部公开方法。最终我们
  仅将其公开。
  我们可以使用反射来测试代码段。因为junit不会在生产环境中交付。

最佳答案

本质上,这是一个风格问题;因此,与其说是真正的技术原因,不如说是意见。我在这里的“技术”思想:


我们偶尔这样做-有时我们在生产代码中添加吸气剂,以检查内部状态。仅仅是因为这是一种简单,直接的信息检索方法。
有了这些吸气剂,我就可以触发一个操作。然后对该内部状态进行某种断言。
替代方法是在测试用例中使用疯狂的东西,例如反射。


事实是:我们习惯将简单的javadoc放在此类受包保护的方法之上,例如/ **仅进行单元测试* /。我们在团队中一致认为这对我们“足够好”。但是当然:在某种程度上,这不是一个好的模式:当您从外部进行内部可观察的东西时;因此您以某种方式将实现细节的某些部分外部化。

换句话说:不要在这里过分。公平地公开那些实际上是实现核心的内部事物(也许可以在很高的抽象层次上工作);但您不希望外部看到“太多”的东西。否则,人们可能会错误地认为这些东西属于您班上的“官方合同”!

但是正如其他人所说,您可能想研究一下Mockito可以为您做的事情。

07-26 09:19
查看更多