php的单元测试,php单元测试

环境:winwods

php版本:5.6.*

PHPUnit安装

1:下载phpunit可执行命令文件phpunit.phar【可选项】

为 PHP 的二进制可执行文件建立一个目录,例如 C:\bin,并加入到环境变量,方便cmd命令的执行

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

打开命令行(例如,按 Windows+R » 输入 cmd » ENTER),创建命令脚本(最后得到 C:\bin\phpunit.cmd):

C:\Users\username> cd C:\bin

C:\bin> echo @php "%~dp0phpunit.phar" %* > phpunit.cmd

C:\bin> exit

2:下载phpUnit官方组建包【必须】

composer require --dev phpunit/phpunit ^5.6

此时大致的目录结构:

%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15489137601553-160x300.png

其中./vendor/bin中也会包含phpunit的命令脚本,与第一步重复了

使用方式

编写测试代码

&lt?php

/**

* 用户类测试

*

* Class UserTest

*/

class UserTest extends PHPUnit_Framework_TestCase

{

/**

* 测试获取用户名

*

* @author liu.bin 2019/1/31 10:24

*/

public function testGetName()

{

// 此处需要手动引入被测试的class

include_once "../src/UserModel.php";

$name = '张三';

$age = 18;

$userModel = new \src\UserModel($name,$age);

$this->assertEquals($name, $userModel->getName());

}

/**

* 测试获取年纪

*

* @author liu.bin 2019/1/31 10:24

*/

public function testGetAge()

{

// 此处需要手动引入被测试的class

include_once "../src/UserModel.php";

$name = '张三';

$age = 19;

$userModel = new \src\UserModel($name,$age);

$this->assertEquals($age, $userModel->getAge());

}

}

测试代码写好后,即可执行phpunit命令

cd ***/test

D:\***\vendor\bin\phpunit .\UserTest.php

大致结果:

.. 2 / 2 (100%)

Time: 577 ms, Memory: 20.50MB

OK (2 tests, 2 assertions)

Generating code coverage report in HTML format ... done

代码覆盖率统计

如果想统计单元测试的代码覆盖率,还需要完成两步工作

1:安装xdebug(必须)

具体过程省略,可参考网络教程

必选扩展xdebug的说明:http://www.phpunit.cn/manual/current/zh_cn/code-coverage-analysis.html

2:编辑phpunit.xml文件,此phpunit.xml文件放置在test目录下面;如果不编辑此文件,需要在phpunit命令时添加相应参数,非常麻烦。

./

../src

如果没有此xml文件,我们在写单元测试的时候需要手动加载被测试的原文件,也无法完成测试覆盖率的统计,系统无法获取总测试代码量是多少

使用composer包里面的phpunit命令,会很方便的加载phpunit组件,方便测试;

使用手动下载的phpunit命令,我们需要在测试代码中手动引入./vendor/autoload.php文件,或者添加命令行参数:–bootstrap,比较麻烦;

如果我们自己编写了phpunit.xml,可以实现类的自动加载和phpunit的配置信息,便无所谓使用哪种方式的phpunit命令了。

bootstrap=”Config.php”,此参数可以自动加载当前目录的Config.php;此文件可以定义时区,require vendor/autoload.php等操作,此时便可以用手动下载的phpunit命令执行单元测试,也会自动加载phpunit组件了。

testsuite,此参数配置哪些目录下的单元测试文件允许被phpUnit命令执行;suffix=”Test.php”定义单元测试文件的后缀名

filter whitelist 配置可以加载哪些被测试的类,实现自动加载被测试的原文件

logging coverage-html生成单元测试覆盖率的保存方式和目录;生成coverage-html方便查看;需要配置whitelist参数,针对whitelist中原文件做单元测试覆盖率统计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值