05月21, 2016

使用phpunit进行单元测试

单元测试定义

什么是单元测试

在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 --------wikipedia

单元测试有什么好处

  1. 单元测试可以迫使我们编码过程中编写可测试代码
  2. 在我们进行环境迁移的时候,单元测试可以清晰的展示哪些方法对原环境依赖需要更新。

可测试设计原则

可测试最重要的是保持代码的环境隔离,不同功能间耦合尽量低,依赖关系可以用依赖注入等明确的依赖关系表示。

  • 代码低耦合,就是面向对象的单一职责原则。对功能进行拆分,达到高内聚(一个单元只完成一个功能),低耦合(模块之间接口最简单)。
  • 明确的依赖关系可以通过依赖注入来表示,PHP很多框架都从架构层面上实现了依赖注入。如laravel的容器。

适用场景

  • 项目很大,会写无数的类,当脑子记不住所有的代码时,就可以用单元测试辅助我们记忆,有问题时快速测出哪有问题。
  • 组件类模块也可以用单元测试来快速验证在各种环境下是否可以无缝运行,比如composer项目里面的目录结构通常是src放代码,test放测试用例。

值得注意的是,创业公司在初期通常需求变化很快,而且功能不多,系统的整体架构比较简单,这时个人认为不适合上单元测试

在PHP中用phpunit进行单元测试

phpunit安装

相当大比例的单元测试工具(无论任何语言)几乎都需要做两种支持

  • 命令行支持(通常是做一个全局命令)
  • 代码支持 phpunit也是如此。

命令行支持phpunit

Linux下
$ wget https://phar.phpunit.de/phpunit-6.1.phar
$ chmod +x phpunit-6.1.phar
$ sudo mv phpunit-6.1.phar /usr/local/bin/phpunit
$ phpunit --version
Windows下

整体上说,在 Windows 下安装 PHAR 和手工在 Windows 下安装 Composer 是一样的过程:

  1. 为 PHP 的二进制可执行文件建立一个目录,例如 C:\bin

  2. 将 ;C:\bin 附加到 PATH 环境变量中(相关帮助)

  3. 下载 https://phar.phpunit.de/phpunit-6.1.phar 并将文件保存到 C:\bin\phpunit.phar

  4. 打开命令行(例如,按 Windows+R » 输入 cmd » ENTER)

  5. 建立外包覆批处理脚本(最后得到 C:\bin\phpunit.cmd):

    C:\Users\username> cd C:\bin
    C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd
    C:\bin> exit
    
  6. 新开一个命令行窗口,确认一下可以在任意路径下执行 PHPUnit:
    C:\Users\username> phpunit --version
    

代码支持phpunit

可以用composer 进行安装

 composer require --dev phpunit/phpunit ^6.1

加载autoload.php后就可以使用phpunit类了,phpunit都提供了哪些方法可以参见https://phpunit.de/manual/current/zh_cn/

本文链接:http://www.qiana.info/post/phpunit.html

-- EOF --

Comments