PHP单元测试-保障代码正确运行的护卫神

代码能否正确运行是应用的关键,如何保证代码的运行就成为至关重要的事情,“对付坦克的最好工具就是另外一台坦克”,保证代码的正确运行就是使用代码来保证,软件的的需求是变动的,很难保证这一次的改动,会不会将引起上次需求的什么变化。如果是测试人员发现了可以修改,但是如果部署到线上,引起的问题就会严重的。
单元测试就是提供一些条件,这些条件将产生一定的结果,如果结果不符就不能通过测试,不能通过测试产生的原因就是:测试代码有问题或者程序代码有问题。就需要去检查具体的原因。
引入单元测试产生的最直接的结果就是代码量要比以前多,二测试代码的管理问题,三,测试条件的更新问题,但是这些问题在保证代码质量面前都显示不是太重要。
PHP一般情况下用来做服务器后端资源的操作,比如说数据的读出与写入,用户的注册与消费都记录在数据库中。所以对php业务逻辑的测试就显的非常重要。
PHP的单元测试工具是PHPUNIT,它属于XUNIT的类工具,PHPUNIT的部署方法有两个,一种是通过composer进行安装,一种是下载phar包进行安装
单元测试命令是phpunit Test.php,然后根据显示的信息进行判断是否通过测试(在命令行下)。就是这样简单


PHPUNIT的安装方式大体上分为两种,composer安装与phar安装这两种
composer的安装方式比较简单使用方法:  composer require --dev phpunit/phpunit ^6.1


或者使用phar的方式来安装,也比较简单,phar相当于一个压缩包,这个压缩包是需要依赖php才可以运行的,所以如果机器上有php的话,可以新建一个phpunit.bat文件,并把这个文件 的位置加入到路径中这样就可以直接的输入phpunit 命令了,当然也可以不建立这样的bat文件,但是每次做调试的时候,都得带上php  phpunit.phar  **文件名,


bat文件内容类似这样


@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit
php "%BIN_TARGET%" %*
 
 
 或者phpunit.cmd也可以的
 echo @php "%~dp0phpunit.phar" %* > phpunit.cmd
 


在使用phpunit做开的过程中,一定要注意phpunit的版本,因为不同版本的phpunit的测试基类是不一样的,例如phpunit6.1以上版本

use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
	
}

phpunit5的测试基类就是PHPUnit_Framework_TestCase
出现找不到类库的时候,首先看一下phpunit的基类的版本是否对应,然后再检查代码


对于业务类型的测试来说,业务之间存在着关联关系,比如说用户登录之后取得凭据,然后带着凭据去访问业务系统,PHPUnit使用
 @depends 标注来表达依赖关系



<?php
use PHPUnit\Framework\TestCase;
class StackTest extends TestCase
{
    public function testEmpty()
    {
        $stack = [];
        $this->assertEmpty($stack);
        return $stack;
    }
    /**
     * @depends testEmpty
     */
    public function testPush(array $stack)
    {
        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertNotEmpty($stack);
        return $stack;
    }
    /**
     * @depends testPush
     */
    public function testPop(array $stack)
    {
        $this->assertEquals('foo', array_pop($stack));
        $this->assertEmpty($stack);
    }
}
?>


上一篇:在windows 平台下常用的mysql 命令


下一篇:oracle数据库还原,如何将dmp文件还原到oralce库