建议是否仅为junit增加方法的范围?

时间:2016-09-16 13:03:33

标签: java unit-testing junit

我正在开发包含junit测试代码的项目。我已经看到一些方法被声明为默认方法(没有访问说明符),并且他们在junit中使用它来进行代码覆盖。任何人都可以告诉哪一个是从下面的选项单元测试代码的最佳方法。

  
      
  1. 将方法设为默认值(无访问说明符)。因为对于junit,我们在类之外公开方法。最终我们是   只为junit公开它。
  2.   
  3. 我们可以使用反射来测试这段代码。因为junit不会在生产环境中交付。
  4.   

1 个答案:

答案 0 :(得分:1)

从本质上讲,这是一个风格的问题;因此,更多的是关于意见而不是真正的技术原因。我的技术"想法在这里:

  • 我们偶尔会这样做 - 有时我们会将 getters 添加到我们的生产代码中,以便检查内部状态。仅仅因为这是一种简单,直接的检索信息的方式。
  • 有了这些吸气剂,我可以触发一次操作;然后在内部状态上做某种断言。
  • 替代方案是在我们的测试用例中使用诸如反射之类的疯狂事物。

事情是:我们的惯例是将一个简单的javadoc放在这样的受包保护的方法之上,比如/ **单元测试只用* /。我们在团队中同意这是足够好的#34;为了我们。但当然:在某种程度上,这是一个好的模式:当您从外部中创建内部时可以观察到的内容;所以你以某种方式外化了实现细节的某些部分

换句话说:不要在这里过火。让内部事物可见是真实的,这是实现的核心(并且可能在非常高的抽象级别上工作);但你不想做太多"外面可见的东西。人们可能错误地认为那些东西属于官方合同"你的班级!

但正如其他人所说,你可能想看看Mockito可以为你做的事情。