Laravel之PHPUnit基本使用

607 阅读2分钟

PHPUnit返回结果可以告诉我们执行时间、占用内存、错误数量、错误文件及代码行号,这不仅帮助我们测试了代码,还帮我们快速定位了bug。

Laravel 天生就具有测试的基因。事实上,Laravel 默认就支持用 PHPUnit 来做测试,并为你的应用程序配置好了 phpunit.xml 文件。框架还提供了一些便利的辅助函数,让你可以更直观的测试你的应用程序。

默认情况,你的应用 tests 目录中包含两个子目录:Feature 和 Unit。单元测试是针对你的代码中非常少,而且相对独立的一部分代码来进行的测试。实际上,大部分单元测试都是针对单个方法进行的。功能测试是针对大面积代码进行的测试,包括多个对象之间的交互,甚至是对 JSON 端点的完整 HTTP 请求。

Feature 和 Unit 目录中都提供一个 ExampleTest.php 测试示例文件。安装一个新的 Laravel 应用程序之后,在命令行下运行 phpunit 命令,即可运行测试。

创建并运行测试


// 在 Feature 目录下创建一个测试类...
php artisan make:test UserTest

// 在 Unit 目录下创建一个测试类...
php artisan make:test UserTest --unit

Tip:可以使用 stub publishing 自定义测试 stub

测试类生成之后,你就可以像平常使用 PHPUnit 一样来定义测试方法。要运行测试只需要在终端上运行 phpunit 命令即可

项目代码:


<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

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

Artisan 测试运行器

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


php artisan test

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


php artisan test --group=feature

输出结果


PASS  Tests\Unit\ExampleTest
  ✓ basic test

   PASS  Tests\Feature\BasicTest
  ✓ example

  Tests:  2 passed
  Time:   1.46s

返回结果可以告诉我们执行时间、占用内存、错误数量、错误文件及代码行号,这不仅帮助我们测试了代码,还帮我们快速定位了bug。