PHPPHPUnit单元测试中类protected/private方法测试

此间首先有三个题材要考虑的是,那类方法是还是不是要被测试?

力排众议上,那类方法都会被此外public类型的措施调用,只要对这些public的艺术做充足的测试,就能够确认保障那一个点子的可靠性,就从未须要再测了。好像是有道理的。

我们先看看好的单元测试的尺码:(AT昂CoraIP)

  • 自动化(Automatic)
  • 彻底(Thorough )
  • 可重复(Repeatable)
  • 独立(Independent )
  • 专业(Professional)

对此测试private/protected方法来说,有其余七个附加原则:

  • 晶莹剔透(Transparency) – 不要改动测试下的系统(System Under Test
    ,SUT),例如,在成品代码中加进包装的方法.
  • 范围(Scope) – 可以在Debug和Release下运行
  • 大致(Simplicity)
    -最小的开发,因而简单修改,并且十分简单引入最小的危害.

正规情形下,PHP中唯有记号为public的方法和属性,才足以在外表被访问,而protected/private方法都没办法儿直接待上访问。

对于protected的,简单的艺术是:通过创制八个子类并追加一个public的不二法门来包裹该protected的不二法门,即可通过这么些子类的public方法来测试。

对此private的法门,则不得不选用PHP的反射本性去拜谒,protected的章程一致也可以用反射完结访问。PHPUnit中实际在Mock
Objects部分就尽量应用了该特性来堵住有些方法的重回值,以成就复杂现象的测试。

相关文章