• PHPUnit单元测试中类protected/private方法测试


    这里首先有一个问题要考虑的是,这类方法是否要被测试?

    理论上,这类方法都会被其它public类型的方法调用,只要对那些public的方法做充分的测试,就可以保证这些方法的可靠性,就没有必要再测了。好像是有道理的。

    我们先看看好的单元测试的原则:(ATRIP)

    • 自动化(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部分就充分使用了该特性来拦截某些方法的返回值,以完成复杂场景的测试。

  • 相关阅读:
    ceph(4)--Ceph 的基础数据结构
    ceph(3)--Ceph 物理和逻辑结构
    ceph(2)--Ceph RBD 接口和工具
    ceph(1)--安装和部署
    Ceph中文文档
    Linux系统介绍(五)常用命令
    Linux系统介绍(四)IO重定向与管道
    剑指offer:跳台阶
    剑指offer:斐波那契数列
    剑指offer:旋转数组的最小数字
  • 原文地址:https://www.cnblogs.com/x3d/p/5582435.html
Copyright © 2020-2023  润新知