快速入门:集成 PHPUnit 编写测试用例
简介
Laravel 植根于测试,实际上,内置使 PHPUnit 对测试提供支持是开箱即用的,并且 phpunit.xml
文件已经为应用设置好了。框架还提供了方便的辅助方法允许你对应用进行优雅的测试。
默认情况下,tests
目录包含了两个子目录:Feature
和 Unit
,分别用于功能测试和单元测试,单元测试专注于小的、相互隔离的代码,实际上,大部分单元测试可能都是聚焦于单个方法。功能测试可用于测试较大区块的代码,包括若干组件之前的交互,甚至一个完整的HTTP请求。
Feature
和 Unit
测试目录下都提供了ExampleTest.php
文件,安装完新的 Laravel 应用后,只需在项目根目录下简单运行 phpunit
即可运行测试(如果提示找不到命令,可以通过 cp vendor/bin/phpunit ./
将命令拷贝过来):
注:PHPUnit 是一个面向程序员的、功能强大的 PHP 单元测试框架,如果你之前没接触过 PHPUnit,可以通过官网及中文文档快速入门。
环境
运行测试的时候,Laravel 会自动设置环境为 testing
,这是因为 phpunit.xml
中定义了环境变量。Laravel 在测试时还会自动配置 Session 和缓存驱动为 array
,这意味着测试时不会持久化存储会话和缓存。
如果需要的话,你也可以定义其它测试环境配置值。testing
环境变量可以在 phpunit.xml
文件中配置,但是要确保在运行命令之前使用 Artisan 命令 config:clear
清除配置缓存。
此外,你还可以在项目根目录下创建一个 .env.testing
文件,该文件会在运行 PHPUnit 测试或执行带 --env=testing
开关的 Artisan 命令时覆盖 .env
文件中的环境变量。
创建 & 运行测试
要创建一个新的测试用例,可以使用Artisan 命令 make:test
:
// 在 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\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
/**
* 简单测试示例
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
注:如果在测试类中定义了自己的setUp
方法,确保在该方法中调用了parent::setUp()
。
3 Comments
我使用laravel5.5写的接口,使用return返回信息的话,调用一次,接口自动执行两次;使用dd()或者exit结束就只执行一次,我是不是改了return 底层啊,求教大佬怎么修改。。。。。。。手动@学院君
执行一次,数据库会插入两次
但是如果是这样,数据库就只插入一次 public function aa(){ $aa = Channel::create([ 'Pname' => 'as45', 'Code' => '100', 'Cnname' => '11', ]); echo $aa; exit; }