* * * * *
[TOC]
## 简介
Laravel 天生就具有测试的基因。事实上,Laravel 默认就支持用 PHPUnit 来做测试,并为你的应用程序配置好了 `phpunit.xml` 文件。框架还提供了一些便利的辅助函数,让你可以更直观的测试应用程序。
默认在你应用的 `tests` 目录下包含了两个子目录: `Feature` 和 `Unit`。单元测试是针对你代码中相对独立而且非常少的一部分代码来进行测试。实际上,大多数单元测试可能都是针对某一个方法来进行的。功能测试是针对你代码中大部分的代码来进行测试,包括几个对象的相互作用,甚至是一个完整的 HTTP 请求 JSON 实例。
在 `Feature` 和 `Unit` 目录中都有提供一个 `ExampleTest.php` 的示例文件。安装新的 Laravel 应用程序之后,只需在命令行上运行 `phpunit` 就可以进行测试。
## 测试环境
在使用 `phpunit` 运行测试时, Laravel 会根据 `phpunit.xml` 文件中设定好的环境变量自动将环境变量设置为 `testing` ,并将 Session 及缓存以 `array` 的形式存储,也就是说在测试时不会持久化任何 Session 或缓存数据。
你可以随意创建其它必要的测试环境配置。`testing` 环境变量可以在 `phpunit.xml` 文件中修改,但是在运行测试之前,请确保使用 `config:clear` Artisan 命令来清除配置信息的缓存。
此外,你还可以在你的项目根目录下创建一个 `.env.testing` 文件,在运行单元测试或者使用 `--env=testing` 开关执行 Artisan 命令时, `.env` 文件中的变量会被这个文件覆盖。
## 定义并运行测试
可以使用 `make:test` Artisan 命令创建一个测试用例:
~~~
// 在 Feature 目录下创建一个测试类...
php artisan make:test UserTest
// 在 Unit 目录下创建一个测试类...
php artisan make:test UserTest --unit
~~~
测试类生成之后,你就可以像平常使用 PHPUnit 一样来定义测试方法。要运行测试只需要在终端上运行 `phpunit` 命令即可:
~~~
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
~~~
> {note} 如果要在你的测试类中定义自己的 `setUp` 方法,请确保调用了 `parent::setUp()` 方法。
- 前言
- 翻译说明
- 发行说明
- 升级指南
- 贡献导引
- 入门指南
- 安装
- 配置信息
- 文件夹结构
- Homestead
- Valet
- 部署
- 核心架构
- 请求周期
- 服务容器
- 服务提供者
- Facades
- Contracts
- 基础功能
- 路由
- 中间件
- CSRF 保护
- 控制器
- 请求
- 响应
- 视图
- URL
- Session
- 表单验证
- 错误
- 日志
- 前端开发
- Blade 模板
- 本地化
- 前端指南
- 编辑资源 Mix
- 安全相关
- 用户认证
- Passport OAuth 认证
- 用户授权
- 加密解密
- 哈希
- 重置密码
- 综合话题
- Artisan 命令行
- 广播系统
- 缓存系统
- 集合
- 事件系统
- 文件存储
- 辅助函数
- 邮件发送
- 消息通知
- 扩展包开发
- 队列
- 任务调度
- 数据库
- 快速入门
- 查询构造器
- 分页
- 数据库迁移
- 数据填充
- Redis
- Eloquent ORM
- 快速入门
- 模型关联
- Eloquent 集合
- 修改器
- API 资源
- 序列化
- 测试相关
- 快速入门
- HTTP 测试
- 浏览器测试 Dusk
- 数据库测试
- 测试模拟器
- 官方扩展包
- Cashier 交易工具包
- Envoy 部署工具
- Horizon
- Scout 全文搜索
- Socialite 社会化登录