手撸php框架2.1--使用测试框架phpunit

测试驱动开发,虽然我接触这个开发方式不久,但我还是想应用到我们的项目中来。好了,不多说,开干。
我们使用的测试框架是:phpunit

1.phpunit安装
在composer.json文件的require-dev下,添加 “phpunit/phpunit”: “>=6.5.0”,使用哪个版本,需要根据php版本和你自己的喜好决定,然后执行composer update即可

2.一般在项目根目录下执行:./vendor/bin/phpunit tests 即可,tests是测试文件所在的目录,我们的测试文件放到和vendor同级的tests中,所以参数是tests

3.封装phpunit的TestCase类
我们不直接使用phpunit提供的TestCase类,而是自己封装一层,叫做TankTestCase,放到tests文件的根目录下,代码如下:

<?php
namespace tankunit;

use PHPUnit\Framework\TestCase;

abstract class TankTestCase extends TestCase
{
}

4.在使用yii框架时,我们一般有一个入口脚本:web/index.php,index.php中引入了我们的项目核心文件Yii,和composer的类自动加载文件vendor/autoload.php。在我们的Tank框架中,我们也打算使用这种方式。但是,在写测试代码的时候,我们怎么引入这些文件呢?不用着急,phpunit提供了在测试之前引入某些文件的方式:–bootstrap path/to/bootstrapfile
在我们的项目中,bootstrap.php文件放到了tests的根目录下,所以运行测试时要执行这条命令:

./vendor/bin/phpunit tests –bootstrap tests/bootstrap.php

bootstrap.php中会引入我们的核心类Tank,composer的自动加载文件vendor/autoload.php,还有我们封装的phpunit的测试类TankTestCase,代码如下:

<?php
error_reporting(-1);

define('TANK_DEBUG', true);

$_SERVER['SCRIPT_NAME'] = '/' . __DIR__;
$_SERVER['SCRIPT_FILENAME'] = __FILE__;

$composerAutoloadFile = __DIR__ . '/../vendor/autoload.php';


if (is_file($composerAutoloadFile)) {
    require_once($composerAutoloadFile);//引入composer的类自动加载器
}
require_once __DIR__ . '/../framework/Tank.php';//引入我们的框架核心类
require_once __DIR__ . '/TankTestCase.php';//引入封装的测试类

ok,到这里,我们的测试部分完事了,之后我们在开发时把测试代码写入相应的tests下的文件中,然后在项目根目录下执行./vendor/bin/phpunit tests –bootstrap tests/bootstrap.php即可。

欲知下事如何,且听下回分解……
github源码:https://github.com/2lovecode/tank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值