mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 23:22:48 +08:00
修正单元测试相关文档
This commit is contained in:
104
tests/README.md
104
tests/README.md
@@ -1,59 +1,14 @@
|
|||||||
###测试目录结构###
|
## 测试目录结构
|
||||||
测试文件主要在tests文件下面,主要有以下几个文件夹
|
|
||||||
- mock 小核心文件,用于做文件加载,引入框架等操作。
|
|
||||||
- framework 真正的测试文件,和项目文件夹机构一致,但是里面都是测试文件
|
|
||||||
- think
|
|
||||||
- application
|
|
||||||
- public
|
|
||||||
- tests
|
|
||||||
- thinkphp
|
|
||||||
- 其他文件
|
|
||||||
|
|
||||||
###准备工作###
|
测试文件主要在 tests 文件下面,主要有以下几个文件夹
|
||||||
1. 判断渲染,若果是测试环境则不执行渲染,主要在library/think/app.php文件中,修改其中的第116行:
|
|
||||||
|
|
||||||
```php
|
- conf 测试环境配置文件。
|
||||||
if (defined('IN_UNIT_TEST')) {
|
- script 测试环境配置脚本。
|
||||||
return $data;
|
- thinkphp 测试用例和相关文件,与项目文件夹机构一致。
|
||||||
} else {
|
- mock.php 小核心文件,用于做文件加载,引入框架等操作。
|
||||||
Response::returnData($data, Config::get('default_return_type'), Config::get('response_exit'));
|
|
||||||
}
|
|
||||||
```
|
|
||||||
和129行
|
|
||||||
|
|
||||||
```php
|
## 主要测试流程
|
||||||
if (defined('IN_UNIT_TEST')) {
|
|
||||||
return $data;
|
|
||||||
} else {
|
|
||||||
Response::returnData($data, Config::get('default_return_type'), Config::get('response_exit'));
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 修改config.php,添加重置配置函数:
|
|
||||||
|
|
||||||
```php
|
|
||||||
// 重置配置参数
|
|
||||||
public static function reset($name, $value = null, $range = ''){
|
|
||||||
self::$config = [];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
3. 添加mock文件,在文件中添加单元测试定义,以及请求定义,否则报错。
|
|
||||||
|
|
||||||
```php
|
|
||||||
<?php
|
|
||||||
// 测试入口文件
|
|
||||||
define('IN_UNIT_TEST', true);
|
|
||||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
|
||||||
// 定义项目路径
|
|
||||||
define('APP_PATH', __DIR__ . '/../application/');
|
|
||||||
// 开启调试模式
|
|
||||||
define('APP_DEBUG', true);
|
|
||||||
// 加载框架引导文件
|
|
||||||
require __DIR__ . '/../thinkphp/start.php';
|
|
||||||
```
|
|
||||||
|
|
||||||
###主要测试流程###
|
|
||||||
thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体的流程为:
|
thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体的流程为:
|
||||||
|
|
||||||
1. 引用bootstrap文件加载mock里的小框架文件,加载所需文件
|
1. 引用bootstrap文件加载mock里的小框架文件,加载所需文件
|
||||||
@@ -62,14 +17,18 @@ thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体
|
|||||||
|
|
||||||
3. 执行单元测试,输出结果
|
3. 执行单元测试,输出结果
|
||||||
|
|
||||||
###测试举例###
|
## 测试举例
|
||||||
例如测试thinkphp里的apc缓存,将分为以下几个过程:
|
|
||||||
|
|
||||||
1. 在tests/framework文件夹下创建apcTest.php文件,该文件应与apc.php目录路径(thinkphp/library/think/cache/driver)一致,并引用 `PHPUnit_Framework_TestCase`。
|
例如测试 thinkphp 里的 apc 缓存,将分为以下几个过程:
|
||||||
|
|
||||||
|
1. 创建 apcTest.php 文件
|
||||||
|
|
||||||
|
该文件应与 apc.php 目录路径(thinkphp/library/think/cache/driver)一致,命名空间与目录所在一致,并引用 `PHPUnit_Framework_TestCase`。
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php
|
||||||
namespace think\cache\driver;
|
|
||||||
|
namespace tests\thinkphp\library\think\cache\driver;
|
||||||
|
|
||||||
class apcTest extends \PHPUnit_Framework_TestCase
|
class apcTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
@@ -81,7 +40,8 @@ thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体
|
|||||||
```
|
```
|
||||||
|
|
||||||
2. 编写测试文件
|
2. 编写测试文件
|
||||||
- 引用app、config和cache
|
|
||||||
|
- 引用app、config和cache
|
||||||
|
|
||||||
```php
|
```php
|
||||||
use think\app;
|
use think\app;
|
||||||
@@ -96,9 +56,9 @@ thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
- 编写测试用例
|
- 编写测试用例
|
||||||
|
|
||||||
*具体写法参照 [PHPUnit 官方文档](https://phpunit.de/manual/4.8/zh_cn/index.html)*
|
*具体写法参照 [PHPUnit 官方文档](https://phpunit.de/manual/4.8/zh_cn/index.html)*
|
||||||
|
|
||||||
```php
|
```php
|
||||||
public function testGet()
|
public function testGet()
|
||||||
@@ -117,24 +77,32 @@ thinkphp5的测试的主要流程是跟think的系统流程是相似的,大体
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. 回到根目录执行单元测试命令:
|
3. 执行单元测试命令
|
||||||
```bash
|
|
||||||
$ phpunit
|
在项目根目录执行
|
||||||
```
|
|
||||||
若想看到所有结果,请添加-v参数
|
```bash
|
||||||
```bash
|
$ phpunit
|
||||||
$ phpunit -v
|
```
|
||||||
|
|
||||||
|
若想看到所有结果,请添加-v参数
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ phpunit -v
|
||||||
```
|
```
|
||||||
|
|
||||||
4. 输出结果
|
4. 输出结果
|
||||||
|
|
||||||
###相关文档###
|
## 相关文档
|
||||||
|
|
||||||
[各个部分单元测试说明](http://www.kancloud.cn/brother_simon/tp5_test/96971 "各部分单元测试说明")
|
[各个部分单元测试说明](http://www.kancloud.cn/brother_simon/tp5_test/96971 "各部分单元测试说明")
|
||||||
|
|
||||||
###大家一起来###
|
## 大家一起来
|
||||||
|
|
||||||
单元测试的内容会跟框架同步,测试内容方方面面,是一个相对复杂的模块,同时也是一个值得重视的部分。希望大家能够多多提出意见,多多参与。如果你有任何问题或想法,可以随时提issue,我们期待着收到听大家的质疑和讨论。
|
单元测试的内容会跟框架同步,测试内容方方面面,是一个相对复杂的模块,同时也是一个值得重视的部分。希望大家能够多多提出意见,多多参与。如果你有任何问题或想法,可以随时提issue,我们期待着收到听大家的质疑和讨论。
|
||||||
|
|
||||||
## 任务进度
|
## 任务进度
|
||||||
|
|
||||||
单元测试任务进度,请大家认领模块
|
单元测试任务进度,请大家认领模块
|
||||||
|
|
||||||
|模块|认领人|进度|
|
|模块|认领人|进度|
|
||||||
|
|||||||
Reference in New Issue
Block a user