muhmdraouf/laravel-paratest

并行运行 Laravel 功能测试,避免竞争条件。

0.0.3 2021-02-01 13:11 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:53 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包包含一些辅助 Artisan 命令和测试特性,允许您使用 Paratest 在 MySQL 或 PostgreSQL 数据库上并行运行功能测试,而不会出现冲突。

该包将为每个正在运行的测试进程创建一个数据库,以避免当功能测试尝试运行创建一些固定数据的测试时,另一个进程正在运行 artisan migrate:fresh 时的竞争条件。

您也不必担心创建测试数据库。它们将在您运行测试时创建。甚至还有一个辅助运行器可以在测试结束后清理测试数据库。

安装

您可以通过 composer 安装此包

composer require muhmdraouf/laravel-paratest --dev

使用方法

注意:您需要一个有权创建数据库的用户。

不要使用 Laravel 的 RefreshDatabase 特性,而使用此包提供的特性

<?php

use MuhmdRaouf\LaravelParatest\Testing\RefreshDatabase;

class MyTest extends TestCase
{
    use RefreshDatabase;
}

提示:要替换所有现有的 Laravel RefreshDatabase 特性的使用,可以使用以下命令

grep -rl 'Illuminate\\Foundation\\Testing\\RefreshDatabase' tests/ | xargs sed -i 's/Illuminate\\Foundation\\Testing\\RefreshDatabase/MuhmdRaouf\\LaravelParatest\\Testing\\RefreshDatabase/g'

您需要手动在您的 base TestCase 中启动此设置特性,因为 Laravel 不会自动执行此操作

<?php

namespace Tests;

use MuhmdRaouf\LaravelParatest\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;

    protected function setUpTraits()
    {
        $uses = parent::setUpTraits();
        if (isset($uses[RefreshDatabase::class])) {
            $this->refreshDatabase();
        }
        return $uses;
    }
}

您可以使用 PHPUnit 运行您的测试

phpunit

或者您可以使用 Paratest

paratest

当使用 paratest 时,将为每个进程创建一个数据库。如果您想在测试结束时清理这些数据库,请使用提供的运行器。首先,在您的 composer.json 文件中注册运行器别名,例如以下内容

{
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        },
        "files": [
            "vendor/muhmdraouf/laravel-paratest/src/ParatestLaravelRunner.php"
        ]
    }
}

现在,运行 composer dump-autoload --optimize,然后您可以使用运行器,如下所示

paratest --runner ParatestLaravelRunner

这将测试运行结束后清理测试数据库。

此包还提供了以下 Artisan 命令

  • php artisan db:create
  • php artisan db:drop
  • php artisan db:recreate

这些命令仅在测试环境中运行。

测试

composer test

更新日志

请参阅 更新日志 获取更多最近更改的信息。

贡献

请参阅 贡献指南 获取详细信息。

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件 mohammed@raouf.me 而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件

Laravel 包模板

此包是用 Laravel 包模板 生成的。