Skip to content

测试:入门

介绍

Laravel 是以测试为核心构建的。实际上,框架自带对 PHPUnit 的测试支持,并且已经为您的应用程序设置了一个 phpunit.xml 文件。框架还提供了方便的辅助方法,使您能够更具表现力地测试您的应用程序。

默认情况下,您的应用程序的 tests 目录包含两个目录:FeatureUnit。单元测试是专注于代码中非常小的、独立部分的测试。实际上,大多数单元测试可能专注于单个方法。功能测试可能测试代码的更大部分,包括多个对象如何相互交互,甚至是对 JSON 端点的完整 HTTP 请求。

FeatureUnit 测试目录中都提供了一个 ExampleTest.php 文件。安装新的 Laravel 应用程序后,在命令行中运行 vendor/bin/phpunit 来运行您的测试。

环境

通过 vendor/bin/phpunit 运行测试时,Laravel 会自动将配置环境设置为 testing,因为在 phpunit.xml 文件中定义了环境变量。Laravel 还会在测试时自动将会话和缓存配置为 array 驱动,这意味着在测试期间不会持久化任何会话或缓存数据。

您可以根据需要自由定义其他测试环境配置值。testing 环境变量可以在 phpunit.xml 文件中配置,但在运行测试之前,请确保使用 config:clear Artisan 命令清除配置缓存!

此外,您可以在项目根目录中创建一个 .env.testing 文件。运行 PHPUnit 测试或使用 --env=testing 选项执行 Artisan 命令时,该文件将覆盖 .env 文件。

创建和运行测试

要创建新的测试用例,请使用 make:test Artisan 命令:

php
// 在 Feature 目录中创建测试...
php artisan make:test UserTest

// 在 Unit 目录中创建测试...
php artisan make:test UserTest --unit
lightbulb

测试存根可以使用 存根发布 进行自定义

生成测试后,您可以像通常使用 PHPUnit 一样定义测试方法。要运行您的测试,请从终端执行 phpunitartisan test 命令:

php
<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    /**
     * 一个基本的测试示例。
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}
exclamation

如果您在测试类中定义了自己的 setUp / tearDown 方法,请确保调用父类的相应 parent::setUp() / parent::tearDown() 方法。

Artisan 测试运行器

除了 phpunit 命令,您还可以使用 test Artisan 命令来运行测试。Artisan 测试运行器提供了有关当前正在运行的测试的更多信息,并将在第一个测试失败时自动停止:

php
php artisan test

任何可以传递给 phpunit 命令的参数也可以传递给 Artisan test 命令:

php
php artisan test --group=feature