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


    本文地址

    分享提纲:

      1.概述

      2.安装

      3.编写第一个测试用例

      4.PHPUnit高级

      5.参考

    1.概述

      1)【测试框架】

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

      

    2.安装

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

      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个断言,没有失败。

      这里注意的是:
        1、所有以Test结尾的类均为测试用例;
        2、所有以test开头的方法均是测试方法,会自动运行;
        3、setUp是每个测试用例最先运行的方法,tearDown是每个测试用例最后运行的方法;
        4、assertTrue用于判断结果是否为true。

      

    4.PHPUnit高级

      4.1) 模拟对象MOCK

        -- mock的深层次原理是什么?
          类PHPUnit_Framework_MockObject_Generator 中的方法 getMock()
            在phpunit检测到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笔记

  • 相关阅读:
    优雅得使用composer来安装各种PHP小工具
    Docker学习总结之Docker与Vagrant之间的特点比较
    深入理解php 匿名函数和 Closure
    laravel 拾遗 中间件
    centos 手动编译 fcitx 各种问题大全
    Install haroopad on centos7
    centos7 編譯 chmsee
    centos 7 禁用笔记本触摸板设置
    理解 Linux 配置文件
    输入法环境变量XMODIFIERS/GTK_IM_MODULE
  • 原文地址:https://www.cnblogs.com/aiweixiao/p/6401362.html
Copyright © 2020-2023  润新知