一些方法和属性被声明为保护类型,我们在测试无返回值或被保护的方法时,继承就能解决问题。为什么要测试被保护方法?我个人认为由于PHP是一种语法宽松的语言,因而必须进行更严格的测试,要从最底层确保方法的正确性。如果必要的话,也可以测试私有方法。
使用继承来测试被保护方法。 编写总测试套件 编写支测试套件 注意:测试用例这里采用目录名加下划线再加原来的测试用例名,来避免不同目录的同名类冲突问题。
目录结构
Lib
+- Math
+- Calculator.php
Tests
+- Math
+- AllTests.php
+- CalculatorTest.php
|- AllTests.php
|- Configure.php
执行所有测试
phpunit --verbose AllTests.php 备注:phpunit命令可以直接使用不带.php的名称或目录,例如,
phpunit CalculatorTest
phpunit Math
但是这里建议您在每个目录下都写一个测试套件AllTests.php文件,这么做可以为后期测试节省许多时间。因为如果你的项目中有几十个甚至上百个文件或者目录结构很深,将导致PHP脚本超出内存的错误,而且phpunit每次都需要花很长的时间来生成测试套件。
自动化测试
自动生成测试用例
phpunit --skeleton Calculator.php
该命令会生成一个CalculatorTest.php的测试用例,里面有两个未完成的测试方法testAdd()和testMultiply(),你需要完善它。
持续集成
如果你需要与其他项目集成或集成到IDE工具中,使用ant构建是个不错的注意。
编写ant构建文件,让构建、测试、报告、清理一部到位。你可以将下面内容加入你的build.xml文件中。 Windows下请将其中的两处 executable="phpunit" 改为 executable="phpunit.bat"。
使用以下命令执行任务:
ant test 执行测试
ant report 生成测试报告
ant clean 清理测试目录
最佳实践
每次编写好类定义后,自动生成测试用例。实现类和测试用例。修改,执行测试,反复重复这个过程。每次修改后,马上修改测试用例,以免之后忘记。
文章来源于领测软件测试网 https://www.ltesting.net/