php单元测试进阶(系列文章)
程序员文章站
2022-03-13 11:29:17
...
单元测试是程序员构建的理想世界。
但要做起来并不容易,原因很简单,要多花时间。而且实际上,web上的大量应用都是以数据库为中心的应用,而单元测试是不测试数据库逻辑的。
phpunit本身包含了dbunit等模块,只是为了方便程序员使用。我自己在使用时,单元测试和集成测试是分开的。而写单元测试和集成测试,花的时间就更多了。
所谓单元测试,一定不包含对数据库调用,对redis这样的服务调用,对http调用,对文件系统调用(即读写文件)。所以即便有大量的单元测试,几秒之内就能全部执行完毕。
以下系列文章主要代码与文字来源于《单元测试的艺术》,原作者:Roy Osherove。译者:金迎。
以下系列文章我根据php的语法与使用习惯做了改编,并使用phpunit作为测试类库。所有代码在我自己电脑测试通过。如转载请注明出处。
php单元测试进阶(1)-安装
php单元测试进阶(2)-入门
php单元测试进阶(3)- 入门 - 添加检验
php单元测试进阶(4)- 入门 - 使用参数化测试
php单元测试进阶(5)- 入门 - 异常测试
php单元测试进阶(6)- 核心技术 - 桩件(stub)
php单元测试进阶(7)- 核心技术 - 桩件(stub) - 构造函数注入桩件
php单元测试进阶(8)- 核心技术 - 桩件(stub) - 属性注入桩件
php单元测试进阶(9)- 核心技术 - 桩件(stub) - 工厂类注入桩件
php单元测试进阶(10)- 核心技术 - 桩件(stub) - 调用方法注入桩件
php单元测试进阶(11)- 核心技术 - 桩件(stub) - 不使用桩件
php单元测试进阶(12)- 核心技术 - mock对象
php单元测试进阶(13)- 核心技术 - mock对象 - 同时使用mock和stub
php单元测试进阶(14)- 核心技术 - 动态mock对象
但要做起来并不容易,原因很简单,要多花时间。而且实际上,web上的大量应用都是以数据库为中心的应用,而单元测试是不测试数据库逻辑的。
phpunit本身包含了dbunit等模块,只是为了方便程序员使用。我自己在使用时,单元测试和集成测试是分开的。而写单元测试和集成测试,花的时间就更多了。
所谓单元测试,一定不包含对数据库调用,对redis这样的服务调用,对http调用,对文件系统调用(即读写文件)。所以即便有大量的单元测试,几秒之内就能全部执行完毕。
以下系列文章主要代码与文字来源于《单元测试的艺术》,原作者:Roy Osherove。译者:金迎。
以下系列文章我根据php的语法与使用习惯做了改编,并使用phpunit作为测试类库。所有代码在我自己电脑测试通过。如转载请注明出处。
php单元测试进阶(1)-安装
php单元测试进阶(2)-入门
php单元测试进阶(3)- 入门 - 添加检验
php单元测试进阶(4)- 入门 - 使用参数化测试
php单元测试进阶(5)- 入门 - 异常测试
php单元测试进阶(6)- 核心技术 - 桩件(stub)
php单元测试进阶(7)- 核心技术 - 桩件(stub) - 构造函数注入桩件
php单元测试进阶(8)- 核心技术 - 桩件(stub) - 属性注入桩件
php单元测试进阶(9)- 核心技术 - 桩件(stub) - 工厂类注入桩件
php单元测试进阶(10)- 核心技术 - 桩件(stub) - 调用方法注入桩件
php单元测试进阶(11)- 核心技术 - 桩件(stub) - 不使用桩件
php单元测试进阶(12)- 核心技术 - mock对象
php单元测试进阶(13)- 核心技术 - mock对象 - 同时使用mock和stub
php单元测试进阶(14)- 核心技术 - 动态mock对象