【夯实PHP基础】PHPUnit -- PHP测试框架

本文地址javascript

 

分享提纲:php

  1.概述html

  2.安装java

  3.编写第一个测试用例linux

  4.PHPUnit高级git

  5.参考github

 

 

1.概述

  1)【测试框架】web

  它是一款轻量级的PHP测试框架,是一个xUnit的体系结构的单元测试框架。复杂的项目,经过单元测试可以快速排查bug,有效减小bug的产生。简单的项目,使用php自带的var_dump()print_r()也能很方便的调试bug。PHPUnit经过运行测试用例里的断言(例如判断返回结果不为空),检查代码是否符合预期。json

  

2.安装

  安装方式有两种。一种是使用phar包,一种是使用Composer。bash

  mac下的安装请参考 http://blog.csdn.net/u013166311/article/details/52622560

  (能够下载低版本的phpunit wget https://phar.phpunit.de/phpunit-4.0.14.phar

因而打开终端,先pear version 验证是否安装了pear。

若是没有安装$sudo PHP /usr/lib/php/install-pear-nozlib.phar -d /usr/local/lib/php -b /usr/local/bin

用$ pear version检测安装成功

$ sudo pear upgrade-all  更新。

最后用如下命令安装成功:

$ wget https://phar.phpunit.de/phpunit-4.0.14.phar

$ chmod +x phpunit.phar

$ sudo mv phpunit.phar /usr/local/bin/phpunit
mac下安装

 

  2.1)使用phar包
    最新版的稳定版phar包是5.7,下载地址 https://phar.phpunit.de/phpunit.phar

    phar5.7发布于2016年12月2日,于2018年2月2日结束支持。

    PHPUnit 5.7 支持 PHP 5.6, PHP 7.0, 和 PHP 7.1。

    注意:PHP的版本比较低,能够下载低版本的 phpunit,例如 wget https://phar.phpunit.de/phpunit-4.0.14.phar

    运行方法:

# 通用
php phpunit.phar --version

# linux
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version

  

  能够查看版本号。

  2.2)使用Composer
    若是用 Composer 来管理项目的依赖关系,只要在项目的composer.json 文件中简单地加上对 phpunit/phpunit 的依赖关系便可。下面是一个最小化的  composer.json 文件的例子,只定义了一个对 PHPUnit 5.7 的开发时依赖:

{
    "require-dev": {
        "phpunit/phpunit": "5.5.*"
    }
}

 

  要经过 Composer 完成系统级的安装,能够运行:

composer global require "phpunit/phpunit=5.5.*"

 

  请确保 path 变量中包含有 ~/.composer/vendor/bin/

 

3.编写第一个测试用例

  3.1)新建文件夹Testcase,编写SayHello.php:

<?php
 
class SayHello{
 
    public function printHello(){
        echo 'Hello';
        return 'Hello';

    }
}
?>
SayHello.php

 

3.2)新建测试用例SayHelloTest.php
<?php
 
require_once 'SayHello.php';
 
class SayHelloTest extends PHPUnit_Framework_TestCase {
 
    public function setUp(){ }

    public function tearDown(){ }

    public function testConnectionIsValid(){
        $hi = new SayHello();
        $this->assertTrue($hi->printHello() == 'Hello');
    }
 
}
SayHelloTest.php

 

 
编写完成后,切换到phpunit.phar所在目录命令行执行:
$ php phpunit.phar Testcase/SayHelloTest.php

 

  输出结果:

PHPUnit 5.7.4 by Sebastian Bergmann and contributors.

.                                                                  1 / 1 (100%)Hello

Time: 130 ms, Memory: 10.00MB

OK (1 test, 1 assertion)

 

结果代表:

  测试经过,1个测试方法,1个断言,没有失败。

  这里注意的是:
    一、全部以Test结尾的类均为测试用例;
    二、全部以test开头的方法均是测试方法,会自动运行;
    三、setUp是每一个测试用例最早运行的方法,tearDown是每一个测试用例最后运行的方法;
    四、assertTrue用于判断结果是否为true。

  

 

4.PHPUnit高级

  4.1) 模拟对象MOCK

    -- mock的深层次原理是什么?
      类PHPUnit_Framework_MockObject_Generator 中的方法 getMock()
        在phpunit检测到mock对象,当要替换的对象由类实例化时,就被替换成了mock的对象,而后,使用mock的方法放回对象的值。
    --【 百度百科--定义mock
       mock在各语言中的实现
 

 

  4.2) 一些常识

  • @test 标注将其标记为测试方法
  • @depends 标注来表达测试方法之间的依赖关系: 被依赖的函数的返回值会被当作依赖着的输入参数 

5.参考

  5.0)【好】PHPUnit手册

  5.1)开始使用 PHPUnit – PHP测试框架

  5.2)web3d/TPUnit: ThinkPHP PHPUnit框架集成

  5.3)[PHP]PHPUnit安装配置及样例 | CoinIdea的技术分享博客

  5.4)《xUnit Test Patterns》学习笔记系列 - CoderZh - 博客园
  

  5.5)【好】PHPUnit笔记

相关文章
相关标签/搜索