PHP单元测试PHPUnit简单用法示例_php技巧_脚本之家

出于我们项目事关到php,由此必要对php代码举办单元测验。经过风华正茂番打听,决定用PHPUnit来测验php。PHPUnit花了多数时日搜索怎么样布署PHPUnit,看官方网站的文书档案也是生龙活虎把泪。但知情怎么安顿后,其实仍旧很简短的。

正文实例汇报了PHP单元测量试验PHPUnit轻易用法。分享给大家供大家参谋,具体如下:

  安装并采纳PHPunit

  • 系统:Windows 10 专业版
  • PHP版本:PHP 5.5.12
  • 服务器工具:WAMPSE大切诺基VEEscort 2.5
  • PHPUnit版本:PHPUnit 4.8

windows开荒条件下,PHP使用单元测量检验能够使用PHPUnit。

    Linux 下安装PHPunit

    PHP 档案包
    要博取 PHPUnit,最简易的方法是下载 PHPUnit 的 PHP 档案包 ,它将
PHPUnit 所急需的保有须要组件捆绑在单个文件中:

    要选择 PHP档案包必要有 phar 扩充。

    要接纳 PHA昂Cora 的 –self-update 效率供给有 openssl 扩张。

    假若启用了 Suhosin 扩充,要求在 php.ini 中允许实践 PHA安德拉:

    suhosin.executor.include.whitelist = phar
    假使要全局安装 PHAEvoque:

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

    PHPUnit x.y.z by Sebastian Bergmann and contributors.
    也能够直接使用下载的 PHAEscort 文件:

$ wget https://phar.phpunit.de/phpunit.phar $ php phpunit.phar –version 

    PHPUnit x.y.z by 塞BathTyne Bergmann and
contributors.(作者的版本是PHPUnit 5.7.4 by Sebastian Bergmann and
contributors.)
    注意:PHPunit是有对应版本的摩登的版的支撑php7.*
官方提议我们设置新型版php,当然不左近要安装新型的只是风姿罗曼蒂克旦你的本子是php6.*+最佳下载最新的PHPunit

一、配置PHPUnit

首先到PHPUnit官网(点此进入)下载相应的版本。大家利用的是php
5.5,于是选拔PHPUnit
4.8。得到 .phar 文件,并把名字改为 phpunit.phar 。

把该公文放到任性地方。以自小编要好为例,笔者把它放到大家项指标目录下,即D:repositoryCourseManagementmobile_api_test 。

右键 自己的微微电脑 ,选择 属性 。点击左边的 高档系统设置 。那个时候弹出 系统性情 ,选择 高级 选项卡,点击右下角的 遭逢变量 。
在客商变量里面,双击 PATH ,在 变量值 后边加多;D:repositoryCourseManagementmobile_api_test (注意最后面包车型地铁分行,路径填存放phpunit.phar的门路)。配置那个是为了在自由地方都能运用PHPUnit,不配备来说,供给在phpunit.phar的路子下工夫动用PHPUnit。

合土耳其语档里有有个别未有涉嫌,正是php的遭逢变量也要安装。比方自身的 php.exe 在E:softwarewampbinphpphp5.5.12 里,那么也要在 PATH 后边增多;E:softwarewampbinphpphp5.5.12 。PS:大概是因为自个儿未有安装PHP的IDE,所以一向未曾配置它,偶尔之间才想到恐怕要增多这几个境况变量。

按火速键 Win + R ,输入cmd并回车。步向存放phpunit.phar的门路。输入 echo @php "%~dp0phpunit.phar" %* > phpunit.cmd 并回车。接着输入 phpunit --version 并回车。如若得到输出 PHPUnit x.y.z by Sebastian Bergmann and contributors. 则表示配置好了(借使有误,输入exit 并回车,重新来叁遍)。如下图:

图片 1

安装

  Windows下安装PHPunit

    1.   为 PHP 的二进制可实行文件创设一个目录,比如 D:Serverbin

    2.   将 D:Serverbin 增添加到
      PATH 景况变量中(那样PHPunit全局生效)

    3.   下载
      C:binphpunit.phar(小心下载下来通常是phpunitx.y.phar,带本子号的,名字要和下部发号出令施行的文件一向否则施行命令会找不到文件甚至于提醒could
      not open file ….)

    4.   打开命令行(举例,按 Windows+Tiguan » 输入 cmd » ENTEOdyssey卡塔尔

      营造外包覆批管理脚本(最终获得D:Serverbinphpunit.cmd):

C:Usersusername> cd D:ServerbinC:bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmdC:bin> exit

      新开七个命令行窗口,确认一下得以在自由路径下进行 PHPUnit:“

C:Usersusername> phpunit --version 

      PHPUnit 5.7.4 by Sebastian Bergmann and contributors.
      注:万风流倜傥全局下不能运作,那就到事前生成的目录下运营试试,如:(还不行就是上述手续出错了,留心检查下)

 C:Usersusername> cd D:Serverbin D:Serverbin phpunit --version

二、使用PHPUnit实行测量检验

应用PHPUnit,必需使用  。以login.php为例(位置在D:repositoryCourseManagementmobile_api ),我们的起首版本是这么的(招待调侃本博客内的代码):

<?php

    error_reporting(0);

    $workNumber = $_POST["login-user"];
    $password = $_POST["login-password"];
    $tableName = $_POST["ident"];

    $con = mysqli_connect("localhost", "root", "", "teacher_class_system");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    } else {
        mysqli_query($con, "SET NAMES utf8");

        $result = mysqli_query($con, "SELECT * FROM $tableName where workNumber = $workNumber and password = $password");
        if (mysqli_num_rows($result) < 1) {
                echo "false";
        } else {
                $result_arr = mysqli_fetch_assoc($result);
                echo json_encode($result_arr, JSON_UNESCAPED_UNICODE);
        }
    }

    ?>

与上述同类没办法测验,于是张开生龙活虎翻修改。首先在 login.php 所在文件夹里建设构造一个文本夹 classes,并在里边新建 class_login.php ,内容为 login.php 修改后的本子:

 <?php

    class Login {
        // 测试工具PHPUnit要求一定要在这里给变量默认值,于是默认为空。
        public function login($workNumber = "",$password = "",$tableName = "") {        
            $con = mysqli_connect("localhost", "root", "", "teacher_class_system");
            if (!$con) {
                die('Could not connect: ' . mysqli_error());
            } else {
                mysqli_query($con, "SET NAMES utf8");

                $result = mysqli_query($con, "SELECT * FROM $tableName where workNumber = $workNumber and password = $password");
                if (!$result || mysqli_num_rows($result) == 0) {
                    return "false";
                } else {
                    $result_arr = mysqli_fetch_assoc($result);
                    return json_encode($result_arr, JSON_UNESCAPED_UNICODE);
                }
            }
        }
    }

    ?>

除开,也要修正原本那么些 login.php 的内容,改革后如下:

  <?php
    error_reporting(0);

    require_once './classes/class_login.php';

    $workNumber = $_POST["login-user"];
    $password = $_POST["login-password"];
    $tableName = $_POST["ident"];

    $log = new Login;
    $response = $log->login($workNumber,$password,$tableName);

    if($response != "false") {
        session_start();
        $_SESSION['id']=$tableName;
    }

    echo $response;

    ?>

开始写测量试验文件

本身把测量检验文件放在 D:repositoryCourseManagementmobile_api_test 这些文件夹内。新建三个文书
`login_test.php’ ,并写入以下代码:

  <?php 
    require_once dirname(__FILE__).'/../mobile_api/classes/class_login.php';

    class LoginTest extends PHPUnit_Framework_TestCase {
        public function testLoginSuccess() {
            $expected = '{"workNumber":"00001","password":"00001","name":"西瓜","sex":"男","birthday":"20151201","department":"计算机","telephone":"110","email":"git@github.com"}';

            $workNumber = '00001';
            $password = '00001';
            $tableName = 'user_teacher';
            $lg = new Login;
            $actual = $lg->login($workNumber,$password,$tableName);

            $this->assertEquals($expected,$actual);
        }

        function testLoginFail() {
            $expected = 'false';

            $workNumber = '11111';
            $password = '11111';
            $tableName = 'user_teacher';

            $lg = new Login;
            $actual = $lg->login($workNumber,$password,$tableName);
            $this->assertEquals($expected,$actual);
        }
    }

    ?>

试行测量检验文件

急速键 Win + 大切诺基,输入cmd并回车。步入该测验文件的目录,输入 phpunit login_test.php 实践测量检验。

图片 2

简言之的测量检验就完事了。

首先下载PHPUnit,官方网址:
依照本身的PHP版本下载对应的PHPUnit版本,笔者本地是PHP5.5,所以那边小编下载PHPUnit4.8。下载完毕拿到phpunit-4.8.35.phar文件,放到任性目录,这边作者放到D:phpunit下,并把公文名改为:phpunit.phar
。配置蒙受变量:右击笔者的微机-》属性-》高端系统设置-》景况变量-》编辑path在最后增加phpunit.phar的门径,这里笔者是D:phpunit,所以在最后增加D:phpunit

  编写测量检验

    
注:
这个文件创建上面生成批处理脚本的文件夹下
     创造文件StackTest.php

<?phpuse PHPUnitFrameworkTestCase;    class StackTest extends TestCase    {        public function testPushAndPop()        {            $stack = [];            $this->assertEquals(0, count($stack));            array_push($stack, 'foo');            $this->assertEquals('foo', $stack[count($stack)-1]);            $this->assertEquals(1, count($stack));            $this->assertEquals('foo', array_pop($stack));            $this->assertEquals(0, count($stack));        }    }    ?>

三、索求进度

风姿浪漫初步下载PHPUnit,获得 .phar 文件,认为要解压,囧。找了半天才开掘成四个能力所能达到解压这种文件的网址(点此步入)。然则并未怎么用……

照着官方文书档案来做,运营时现身错误:

‘php’ 不是中间或外界命令,亦不是可运转的前后相继
或批管理文件。

Google找寻,必应寻觅,StackOverFlow寻找,百度寻找,搜到的答案都未有用。

重假诺因为她俩都暗中认可你早已布置好了PHP景况变量……

终极想着是否前边生成的 phpunit.cmd 有标题?于是查看一下以此文件的内容。溘然想到是还是不是PHP意况变量没安装的原故?张开cmd,输入 php --version 。得到:

‘php’ 不是当中或外界命令,亦非可运维的顺序
或批处理公事。

和上边的大谬不然一样!果然是这里的问题。于是把 ;E:softwarewampbinphpphp5.5.12 增添到情况变量中。再运营 php --version 得到:

PHP 5.5.12 (cli) (built: Apr 30 2014 11:20:58)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

再进入 phpunit.cmd 所在文书夹,运营 phpunit --version。得到:

PHPUnit 4.8.18 by Sebastian Bergmann and contributors.

主题材料一蹴而就!

通过此次的根究,未来蒙受”找不到xxx”这种主题素材的时候,首先会记念情形变量的设置。

比如说化解那么些主题材料的当日清晨,小编想行使Visual Studio
Code的Git功能,不过却获得晋升:

图片 3

先是个反应是:小编明显安装了msysgit啊。

其次个反应是:会不会是境况变量没布置?张开意况变量配置,果然未有。于是将 git.exe 所在文件夹的渠道加多进去。重启Visual
Studio Code,难点解决!

张开命令行win+奥迪Q7输入cmd,步入到D:phpunit

    举行测验

D:Serverbin  phpunit StackTest.phpD:Serverbin>phpunit login_test.php    PHPUnit 5.7.4 by Sebastian Bergmann and contributors.    .                                                                   1 / 1 (100%)    Time: 134 ms, Memory: 8.00MB    OK (1 test, 5 assertions)

    PHPunit的设置和编排测量试验已经做到了。具体的操作请查看官方手册。
    官方网站手册

    迎接指正交换 QQ:407461375

cd /d D:phpunit

安装phpunit

echo @php "%~dp0phpunit.phar" %* > phpunit.cmd

查看是还是不是安装成功

phpunit --version

万风姿罗曼蒂克呈现phpunit的版本消息,表达安装成功了,那边小编出示:PHPUnit 4.8.35 by
Sebastian 伯格mann and contributors.

测试

先写几个急需测验的类,该类有八个eat方法,方法重临字符串:eating,文件名叫Human.php

再写一个phpunit的测试类,测试Human类的eat方法,必须引入Human.php文件、phpunit,文件名为test1.phpassertEquals('eating', $human->eat; } }?>

里头assertEquals方法为断言,剖断eat方法重回是不是等于’eating’,假如回去一直则成功不然重回错误,运转测验:打开命令行,步向test1.php的门径,然后运转测量检验:

phpunit test1.php

PHPUnit 4.8.35 by Sebastian Bergmann and contributors..Time: 202 ms,
Memory: 14.75MBOK

则意味着断言处成功,即重回值与传播的参数值生机勃勃致。

越来越多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《PHP错误与那多少个管理办法计算》、《php字符串用法总括》、《PHP数组操作本领大全》、《PHP运算与运算符用法总结》、《PHP网络编制程序手艺总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》及《php卓绝开荒框架总计》

但愿本文所述对我们PHP程序设计具备利于。

发表评论

电子邮件地址不会被公开。 必填项已用*标注